2016-03-29 22 views
0

Ich habe einen Code für die Berechnung der euklidischen Distanz wie folgt aus:euklidischen Abstand zweier Vektoren mit unterschiedlicher Länge

for(int j=0;j<inputdimension;j++){ 
     distance += Math.pow((vector1[j] - vector2.get(j)), 2); 
    } 

und ich habe ein Beispiel von Daten mit unterschiedlichen Datenfeldgröße, die ich mit diesem euklidischen Abstand berechnen möchten Funktion für diese beiden Array. zum Beispiel:

vector1[] = {0.5,0.1,0.3,1.5} 
vector2[] = {1.4,3.2,3.4,0.1,7.8,0.2,8.3,8.4} 

Bisher habe ich angetroffen Beispiel für die euklidische Distanz mit der gleichen Array-Größe zu berechnen. So komme ich mit einer Lösung, um die verbleibenden Array zu entfernen, so dass sie Gleichgewicht wie dies zum Beispiel gehen:

vector1[] = {0.5,0.1,0.3,1.5} 
vector2[] = {1.4,3.2,3.4,0.1} 

Das Problem ist, ich weiß nicht, ob ihr Recht oder nicht? Gibt es eine andere Möglichkeit, diese Daten auszugleichen?

+0

Ich habe eine harte Zeit zu interpretieren, was ein 8-dimensionaler Vektor bedeutet. Das heißt, ich denke, Sie sollten davon ausgehen, dass alle Vektoren mit der größten Länge identisch sind und ihre zusätzlichen Elemente alle null sind. – markspace

+0

Dieses Array-Beispiel, das ich verwende, ist das Beispiel für ein Tonsignal, das ich mit mfcc verarbeitet habe, und ich möchte es mit der LVQ-Methode trainieren –

Antwort

1

Die Antwort ist einfach. Sie können keinen euklidischen Abstand zwischen zwei Punkten finden, die eine unterschiedliche Anzahl von Dimensionen haben. Wenn Sie das verbleibende Array so eliminieren, wäre die Antwort unrealistisch und inkonsistent. Sie können jedoch Nullen zu kleineren Arrays hinzufügen, wenn dies ein Muss für Sie ist. Das Ergebnis wird besser sein, aber meiner Meinung nach wird es immer noch unrealistisch sein.

P.S. Sie müssen Math.sqrt(distance) Methode nach For-Schleife verwenden.

Verwandte Themen