J'ai deux vecteurs (matrices à une seule rangée). Supposons que nous connaissions déjà la longueur len
.
A = [ x1 x2 x3 x4 x5 .... ]
B = [ y1 y2 y3 y4 y5 .... ]
Pour calculer la distance euclidienne entre eux quelle est la méthode la plus rapide. Ma première tentative est:
diff = A - B
sum = 0
for column = 1:len
sum += diff(1, column)^2
distance = sqrt(sum)
J'ai parcouru cette méthode des millions de fois. Donc, je cherche quelque chose qui est rapide et correct. Notez que je n'utilise pas MATLAB et que je n'ai pas l'API pdist2 disponible.
diff = A - B;
distance = sqrt(diff * diff');
ou
distance = norm(A - B);
Pour ajouter à @kol answer,
diff = A - B;
distance = sqrt(sum(diff * diff')) % sum of squared diff
ou
distance = norm(A-B);
[val idx] = sort(sum(abs(Ti-Qi)./(1+Ti+Qi)));
ou
[val idx] = sort(sqrt(sum((Ti-Qi).^2)));
Val est la valeur et idx est la valeur d'index d'origine de la colonne en cours de tri après l'application de la distance euclidienne . (Code Matlab)