对于给定的向量,比如说v=[1 2 2]
,我需要进行标准化,并且结果矩阵中所有值的总和必须为1.然后我将matlab代码用作w=v/norm(v,1)
。现在结果w=[0.2000 0.4000 0.4000]
即sum=0.2+0.4+0.4=1
并满足条件。但是当使用负值时,结果是错误的。即v=[1 -2 2]
和w=v/norm(v,1)
。现在结果为w=[0.2000 -0.4000 0.4000]
和sum = 0.2+(-0.4)+0.4 != 1
。此总和不等于1。然后我正在使用w=abs(v)/norm(v,1)
。这是对的吗?
答案 0 :(得分:0)
我会考虑减去最低值:
V = v - min(v)
W = V/norm(V,1)
现在sum(W)
等于1
,您将不会像使用abs
答案 1 :(得分:0)
norm(v,1)
忽略符号(它计算sum(abs(v))
)。要使向量之和等于1,可以使用
w = v/sum(v);