Quick way to find element by element difference betwen two vectors

11 visualizzazioni (ultimi 30 giorni)
I have two vectors, roughly of size 5000 each. Let’s call them vec1 and vec2. I would like a matrix of size 5000 x 5000 where the (i,j)th element represents the absolute difference between the ith element of vec1 and the jth element of vec2.
I've written my code as follows but it's very slow. I may need to expand the dimensionality of the problem so a quick way to do this would be much appreciated. Does anyone have a better way to do this?
mat=zeros(size(vec1,1),size(vec2,2));
for i=1:size(mat,1)
for j=1:size(mat,2)
mat(i,j)=abs(vec2(j)-vec1(i));
end
end

Risposta accettata

James Tursa
James Tursa il 2 Ago 2016
mat = abs(bsxfun(@minus,vec2(:).',vec1(:)));

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by