This is not the fastest solution (both Sergio's and Daniel's are faster).
My approach is to handle the measurements one by one.
I assume that measurements are few relative to number of rows.
So my suggestion becomes:
it is 22% faster than #1, but with fewer measurements it becomes faster.
What you get is a full, but symmetric matrix similar to the requested answer.
My approach is to handle the measurements one by one.
I assume that measurements are few relative to number of rows.
So my suggestion becomes:
Code:
mata:
R = rows(X)
C = cols(X)
A2 = J(N, N, 0)
timer_clear(1)
timer_on(1)
for (reps = 1; reps <= `nreps' ; reps++) { // outer loop just for timing
for (c = 1; c <= C; c++) A2 = A2 + (J(R, 1, X[,c]') :== X[,c])
}
timer_off(1)
timer()
end
What you get is a full, but symmetric matrix similar to the requested answer.

Comment