2012-04-10 22 views
2

Wie normalisierst du einen M * N-Vektor, so dass die Summe aller seiner Elemente jetzt gleich 1 ist. Ich habe ein bisschen online geblättert, und nichts scheint mir zu entsprechen, was ich brauche. Vielen Dank!Normalisieren Sie einen Vektor?

+2

zu teilen Haben Sie versucht, die Summe aller Elemente zu finden und jedes Element teilen, indem er diese Summe? – Vladimir

+0

Kleiner Hinweis: Die Summe aller Einträge eines Vektors ist nur eine [Norm] (http://en.wikipedia.org/wiki/Norm_%28mathematics%29), wenn alle Einträge nicht-negativ sind. Im Allgemeinen möchten Sie wahrscheinlich die [Summe der _absolute Werte_ Ihrer Einträge] (http://en.wikipedia.org/wiki/Norm_%28mathematics%29#Taxicab_norm_or_Manhattan_norm) gleich 1. – Anthales

+0

Ja, ich habe auch negative Werte. .. – Eddie

Antwort

1

Sie addieren alle Elemente, dann teilen Sie jedes Element durch die Summe.

Offensichtlich muss die Division (zumindest) im Fließkomma sein. Da dies eine Gleitkomma-Matrix anzeigt, wird das Summieren unter Beibehaltung der maximalen Genauigkeit nicht trivial sein.

Wenn Sie zum Beispiel ein großes Element und viele kleine Elemente haben, erhalten Sie wahrscheinlich ein genaueres Ergebnis, wenn Sie alle kleinen Elemente zusammenfügen, dann diese Summe zum großen Element hinzufügen, als wenn Sie jedes kleine Element einzeln zu dem großen hinzufügen würden.

Edit: Ich denke, ich sollte hinzufügen, dass der übliche Weg, um damit umzugehen, Kahan Summation genannt wird, nach dem hohen Guru der numerischen Analyse, William Kahan.

0

Ich glaube, Sie haben jede Vektorkomponente durch den euklidischen Abstand des Vektors