Distancia euclidiana en octava

16

Me gustaría saber si hay una manera rápida de calcular la distancia euclidiana de dos vectores en Octave. Parece que no hay una función especial para eso, así que ¿debería usar la fórmula con sqrt?

akari
fuente
Esto puede haber sido rechazado porque esta es una pregunta básica para la que debería poder encontrar la respuesta mirando la documentación de Octave o haciendo una búsqueda en Internet adecuada. Sin embargo, veo que buscar "octava euclidiana" u "octava distancia euclidiana" no produce resultados útiles tan rápidamente como "norma de octava".
Elaine Hale
sugerencia: la próxima vez, Google algo así como "Distancia de Matlab entre dos vectores". Mathworks tiene documentación centralizada que es fácil de encontrar (hay un manual de documentación oficial de Octave que debe encontrar, pero puede tomar un poco de trabajo encontrarlo). Para algo así de simple, es probable que una función con el mismo nombre en Octave haga lo mismo.
Stefan Smith
Las estadísticas sobre esta pregunta hablan por sí mismas.
Boatcoder 01 de

Respuestas:

31

La distancia euclidiana entre dos vectores es la doble norma de su diferencia, por lo tanto

d = norm( x1 - x2 , 2 );

debería hacer el truco en Octave. Tenga en cuenta que si normse omite el segundo argumento de , la norma 2 se usa por defecto.

Pedro
fuente
0

Aquí hay un método para calcular la distancia entre una matriz de vectores ( X) y un solo vector ( X(1, :)por ejemplo):

distances = sqrt(sum((X - X(1, :)) .^ 2, 2));
Steven C. Howell
fuente