我需要规范化一个包含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)
有什么提示吗?
提前谢谢。