Wie soll ich das normalisieren eines Vektors in Matlab, wo die Summe ist 1?

Brauche ich, um zu normalisieren eines Vektors von N ganzen zahlen, so dass:

  • Jeder Wert ist proportional zu seinem ursprünglichen Wert (der Wert wird zwischen 0 und 1)
  • Die Summe aller Werte ist =1

Zum Beispiel:

Wenn ich einen Vektor

V = [2,2,1,0]

den normalisierten Vektor sollte:

V_norm = [0.4,0.4,0.2,0]  % 0.4+0.4+0.2 = 1

Versuchte ich mit vielen Lösungen, die gefunden wurden in dieser Gemeinde und auf der web-und schließlich habe ich es mit diesem code:

part = norm(V);
if part > 0
  V_norm = V/part;
else % part = 0 --> avoid "divide by 0" 
  V_norm = part;
end

Das problem, das funktioniert, wenn:

  • alle Elemente des Arrays "0" --> das resultierende array nicht ändern
  • nur ein element des Arrays ist >0 und sind alle anderen Elemente = 0 --> das resultierende array: element >0 ist 1 und der andere 0

aber wenn ich einen anderen Fall,obwohl das Ergebnis proportional ist,wird die Summe nicht 0 ist.
Zum Beispiel:

   V = [1,0,1]
   V_norm = [0.74,0,0.74]

   V = [1,1,1]
   V_norm = [0.54,0.54,0.54]

(Ich bin mir nicht sicher, ob die Nummer richtig sind, weil ich kann nicht mit Matlab jetzt, aber ich bin mir sicher, dass die Summe > 1 )

Ahy Tip???

Danke im Voraus

InformationsquelleAutor dragonmnl | 2012-06-27

Schreibe einen Kommentar