我需要标准化 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
我尝试了在这个社区和网络上找到的许多解决方案,最后我用这段代码做到了:
part = norm(V);
if part > 0
V_norm = V/part;
else % part = 0 --> avoid "divide by 0"
V_norm = part;
end
如果出现以下问题,则此问题有效:
- 数组的所有元素都是“0”——>结果数组不会改变
- 数组中只有一个元素 >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)
啊提示?
先感谢您