Distance euclidienne en octave

18

Je voudrais savoir s'il existe un moyen rapide de calculer la distance euclidienne de deux vecteurs en octave. Il semble qu'il n'y ait pas de fonction spéciale pour cela, alors devrais-je simplement utiliser la formule avec sqrt?

akari
la source
Cela a peut-être été rejeté parce que c'est une question fondamentale pour laquelle vous devriez pouvoir trouver la réponse en consultant la documentation d'Octave ou en effectuant une recherche Internet appropriée. Cependant, je vois que la recherche de "octave euclidienne" ou "octave euclidienne distance" ne donne pas des résultats utiles presque aussi rapidement que "octave standard".
Elaine Hale
suggestion: la prochaine fois, Google quelque chose comme "distance Matlab entre deux vecteurs". Mathworks a une documentation centralisée qui est facile à trouver (il y a un manuel de documentation officiel d'Octave que vous devriez trouver, mais cela peut prendre un peu de travail pour le trouver). Pour quelque chose d'aussi simple, il est probable qu'une fonction du même nom dans Octave fasse la même chose.
Stefan Smith
Les statistiques sur cette question parlent d'elles-mêmes.
Boatcoder

Réponses:

33

La distance euclidienne entre deux vecteurs est la norme à deux de leur différence, d'où

d = norm( x1 - x2 , 2 );

devrait faire l'affaire dans Octave. Notez que si le deuxième argument de normest omis, la norme 2 est utilisée par défaut.

Pedro
la source
0

Voici une méthode pour calculer la distance entre un tableau de vecteurs ( X) et un seul vecteur ( X(1, :)à des fins d'exemple):

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