次のように、N個の整数のベクトルを正規化する必要があります。
- 各値は元の値に比例します(値は0から1の間になります)
- すべての値の合計は=1です
例えば:
ベクトルがある場合
V = [2,2,1,0]
正規化されたベクトルは次のようになります。
V_norm = [0.4,0.4,0.2,0] % 0.4+0.4+0.2 = 1
私はこのコミュニティとWebで見つかった多くのソリューションを試し、最後に次のコードでそれを行いました。
part = norm(V);
if part > 0
V_norm = V/part;
else % part = 0 --> avoid "divide by 0"
V_norm = part;
end
これが機能する問題:
- 配列のすべての要素は「0」です->結果の配列は変更されません
- 配列の1つの要素のみが>0であり、他のすべての要素は= 0->結果の配列:要素> 0は1で、他の要素は0です。
しかし、別のケースがある場合、結果は比例しますが、合計は0ではありません。例:
V = [1,0,1]
V_norm = [0.74,0,0.74]
V = [1,1,1]
V_norm = [0.54,0.54,0.54]
(現在Matlabを使用できないため、数値が正しいかどうかはわかりませんが、合計が1より大きいと確信しています)
ヒント?
前もって感謝します