如何使用matlab对具有负值的矢量进行标准化?

时间:2014-01-06 13:07:39

标签: matlab

对于给定的向量,比如说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)。这是对的吗?

2 个答案:

答案 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);