मान लीजिए कि मेरे पास दो मैट्रिसेस Nx2 हैं, Mx2 क्रमशः N, M 2d वैक्टर का प्रतिनिधित्व करते हैं। क्या प्रत्येक वेक्टर जोड़ी (एन, एम) के बीच की दूरी की गणना करने का एक सरल और अच्छा तरीका है?
आसान लेकिन अक्षम तरीका निश्चित रूप से है:
d = zeros(N, M);
for i = 1:N,
for j = 1:M,
d(i,j) = norm(n(i,:) - m(j,:));
endfor;
endfor;
निकटतम उत्तर जो मुझे मिला है bsxfun
, उसका उपयोग किया गया है :
bsxfun(inline("x-y"),[1,2,3,4],[3;4;5;6])
ans =
-2 -1 0 1
-3 -2 -1 0
-4 -3 -2 -1
-5 -4 -3 -2
cartprod
, इसलिए अब मैं लिख सकता हूं: (1) x = cartprod(n(:,1), m(:,1));
(2) y = cartprod(n(:,2), m(:,2));
(3) d = sqrt((x(:,1)-x(:,2)).^2+(y(:,1)-y(:,2)).^2)
.. जो बहुत तेजी से चलता है!