sjpet2004 发表于 2006-12-21 16:13

怎么用循环求几个矩阵的特征值?

function B=meanB1(b1,b2,b3,b4,b5)
b1=[1 3 1
    1/3 1 1/3
    1 3 1];
b2=[1 2 2 5
    1/2 1 2 5
    1/2 1/2 1 3
    1/5 1/5 1/3 1];
b3=[1 2 1/2 1 5
    1/2 1 1/3 1/2 3
    2 3 1 2 7
    1 2 1/2 1 5
    1/5 1/3 1/7 1/5 1];
b4=[1 1/5 1/3
    5 1 2
    3 1/2 1];
b5=[1 1/5 1
    5 1 5
    1 1/5 1];
%求特征值
for i=1:5
    tb(i)=eig(bi);
end
tb
请帮忙看一下这个程序,运行后总提示:Undefined function or variable 'bi'.

Error in ==> meanB1 at 22
    tb(i)=eig(bi);

xjzuo 发表于 2006-12-21 16:34

程序有不少问题, 很明显matlab不会知道bi是什么?
对于你的这个程序, 建议用元胞数组计算,很容易实现.

yukeyyxh 发表于 2006-12-21 17:04

我自己做了一下:code is :

b{1,1}=[1 3 1
    1/3 1 1/3
    1 3 1];
b{1,2}=[1 2 2 5
    1/2 1 2 5
    1/2 1/2 1 3
    1/5 1/5 1/3 1];
b{1,3}=[1 2 1/2 1 5
    1/2 1 1/3 1/2 3
    2 3 1 2 7
    1 2 1/2 1 5
    1/5 1/3 1/7 1/5 1];
b{1,4}=[1 1/5 1/3
    5 1 2
    3 1/2 1];
b{1,5}=[1 1/5 1
    5 1 5
    1 1/5 1];

tb=cell(1,5);
for i=1:5
   
    tb{1,i}=eig(cell2mat(b(1,i)));
   
end

for i=1:5
cell2mat(tb(1,i))
end

result is :

ans =

         0
    3.0000
    0.0000


ans =

   4.0648         
-0.0246 + 0.5119i
-0.0246 - 0.5119i
-0.0156         


ans =

   5.0220         
-0.0024 + 0.3326i
-0.0024 - 0.3326i
   0.0000         
-0.0171         


ans =

   3.0037         
-0.0018 + 0.1053i
-0.0018 - 0.1053i


ans =

         0
    3.0000
   -0.0000


你看是你想要的结果吗 ?

[ 本帖最后由 yukeyyxh 于 2006-12-21 17:08 编辑 ]

sjpet2004 发表于 2006-12-21 21:07

谢谢

要的就是这个结果,非常感谢

stephenhope 发表于 2006-12-21 21:53

恩,其实可以尝试实用eval这个函数

循环的语句可以这样表示
eval( [' tb('num2str(i)')=eig(b'num2str(i) ')'])

yukeyyxh 发表于 2006-12-22 09:22

stephenhope你的回答很不错,向你学习,只是循环语句的表达式有些问题!


应该是:eval( [' tb',num2str(i),'=eig(b',num2str(i), ')'])

code is :
b1=[1 3 1
    1/3 1 1/3
    1 3 1];
b2=[1 2 2 5
    1/2 1 2 5
    1/2 1/2 1 3
    1/5 1/5 1/3 1];
b3=[1 2 1/2 1 5
    1/2 1 1/3 1/2 3
    2 3 1 2 7
    1 2 1/2 1 5
    1/5 1/3 1/7 1/5 1];
b4=[1 1/5 1/3
    5 1 2
    3 1/2 1];
b5=[1 1/5 1
    5 1 5
    1 1/5 1];
%求特征值

for i=1:5
    eval( [' tb',num2str(i),'=eig(b',num2str(i), ')'])
   
end



得到结果一样!
页: [1]
查看完整版本: 怎么用循环求几个矩阵的特征值?