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);