怎么用循环求几个矩阵的特征值?
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); 程序有不少问题, 很明显matlab不会知道bi是什么?
对于你的这个程序, 建议用元胞数组计算,很容易实现. 我自己做了一下: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 编辑 ]
谢谢
要的就是这个结果,非常感谢 恩,其实可以尝试实用eval这个函数循环的语句可以这样表示
eval( [' tb('num2str(i)')=eig(b'num2str(i) ')']) 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]