matlab中,我用[v,d]=eig(c)求出了矩阵的最大特征值和对应的特征向量,如何将进行归一化呢?

例如
>> c=[1 5 0.5;0.2 1 1/7;2 7 1]

c =

1.0000 5.0000 0.5000
0.2000 1.0000 0.1429
2.0000 7.0000 1.0000

>> [v,d]=eig(c)

v =

Columns 1 through 2

0.4877 -0.2439 + 0.4224i
0.1099 -0.0549 - 0.0951i
0.8661 0.8661

Column 3

-0.2439 - 0.4224i
-0.0549 + 0.0951i
0.8661

d =

Columns 1 through 2

3.0142 0
0 -0.0071 + 0.2064i
0 0

Column 3

0
0
-0.0071 - 0.2064i
我需要的是最大特征值3.0142对应的特征向量 0.4877
0.1099
0.8661
如何化为归一化的向量呢?
谢谢三位的回复,我需要的是如何把V=[0.4877 0.1099 0.8661]这个向量为和为1的三个数,作为我一组指标的权重,希望高手进一步提供答案。(手算结果为0.334, 0.075 ,0.591。)

>> c=[1 5 0.5;0.2 1 1/7;2 7 1];

[x,lumda]=eig(c);
r=abs(sum(lumda));
n=find(r==max(r));
max_lumda_c=lumda(n,n) %最大特征根
max_x_c=x(:,n); %最大特征根的对应的特征向量

max_x_c_1=max_x_c/norm(max_x_c) %归一化

得到结果:==========================
max_lumda_c =

3.0142

max_x_c_1 =

0.4877
0.1099
0.8661

===================================
和为1,将最后一句改为:
max_x_c_1=max_x_c/sum(max_x_c)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-01
在你的代码后面加一句
v(:,1)=v(:,1)/norm(v(:,1),2)
第2个回答  2008-12-01
2楼说得很对
相似回答