Quick way to find element by element difference betwen two vectors

7 次查看(过去 30 天)
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

采纳的回答

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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by