euclidean distancia comando matlab octave

matlab - comando - Distancia euclidiana entre dos vectores(matriz de una sola fila)



distancia en matlab (3)

diff = A - B; distance = sqrt(diff * diff'');

o

distance = norm(A - B);

Tengo dos vectores (matrices de fila única). Supongamos que ya sabemos la longitud len .

A = [ x1 x2 x3 x4 x5 .... ] B = [ y1 y2 y3 y4 y5 .... ]

Para calcular la distancia euclidiana entre ellos, ¿cuál es el método más rápido? Mi primer intento es:

diff = A - B sum = 0 for column = 1:len sum += diff(1, column)^2 distance = sqrt(sum)

Tengo un ciclo a través de este método millones de veces. Entonces, estoy buscando algo que sea rápido y correcto. Tenga en cuenta que no estoy usando MATLAB y no tengo API pdist2 disponible.


[val idx] = sort(sum(abs(Ti-Qi)./(1+Ti+Qi)));

o

[val idx] = sort(sqrt(sum((Ti-Qi).^2)));

Val es el valor e idx es el valor del índice original de la columna que se ordena después de aplicar la distancia euclidiana. (Código de Matlab)


Para agregar a la respuesta de @kol,

diff = A - B; distance = sqrt(sum(diff * diff'')) % sum of squared diff

o

distance = norm(A-B);