当前位置:编程学习 > Matlab >>

求matlab高手解决

t=-2.8;A=zeros(8,8);a=zeros(8,8);B=zeros(8,8);b=zeros(8,8); H1=[0,t,0,0,0,0,0,0; t,0,t,0,0,0,0,0; 0,t,0,t,0,0,0,0; 0,0,t,0,t,0,0,0; 0,0,0,t,0,t,0,0; 0,0,0,0,t,0,t,0; 0,0,0,0,0,t,0,t; 0,0,0,0,0,0,t,0;]; H2=[0,0,0,0,0,0,0,0; t,0,0,0,0,0,0,0; 0,0,0,t,0,0,0,0; 0,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0; 0,0,0,0,t,0,0,0; 0,0,0,0,0,0,0,t; 0,0,0,0,0,0,0,0;]; c=H2';d=H1'; I=[1,0,0,0,0,0,0,0; 0,1,0,0,0,0,0,0; 0,0,1,0,0,0,0,0; 0,0,0,1,0,0,0,0; 0,0,0,0,1,0,0,0; 0,0,0,0,0,1,0,0; 0,0,0,0,0,0,1,0; 0,0,0,0,0,0,0,1]; for e=-2.5:0.1:2.5 E=e+0.001i; H=E*I-H1; h=inv(H); m=h*c; n=h*H2; while m>0.001&n>0.001 m1=inv(I-m*n-n*m)*m*m; n1=inv(I-m*n-n*m)*n*n; a=m1; b=n1; A=m+n*a; B=n+m*b; m=m1; n=n1; end m A B gl=inv(E*I-H1-c*B); gr=inv(E*I-H1-H2*A); XL=d*gl*H1; XR=H2*gr*c; G1=inv(E*I-H1-XL-XR); YL=i*(XL-XL'); YR=i*(XR-XR'); T=trace(YL*G1*YR*G1') plot(E,T,'.'); hold on end 其中,m可以循环,为什么A和B不循环?
追问:谢谢回答,但是我用norm函数时会出现NORM(X,P) is available for matrix X only if P is 1, 2, inf or 'fro'.             
norm函数是用于向量的,不能用于矩阵。应当用max(max(x)),min(min(x))求矩阵x的最大或最小元素。但是上面的程序还是有问题,应该是循环中的,麻烦你帮忙看看。谢谢!谢谢回答,你觉得应该怎么改,麻烦帮忙改一下,顺便看一下循环中有没有问题。谢谢!
答案:你的m是一个矩阵(m=h*c;)但你却让他和一个数比较 (m>0.001&n>0.001)。结果是还是一个矩阵,你让while循环如何停止,所以matlab判断while循环时就认为条件不满足,跳过了while循环。
建议你看下norm函数,看看对你判断语句的的编写有没有帮助。
另外修改下程序,我觉得效率有点低。
其他:你的while循环始终没有执行,也就是m,A,B都没有在while里循环。问题就是你的m是一个矩阵而且数值都是复数,他不能和一个数而且是实数进行比较。 

上一个:用matlab编程,画图时用plot(x,y),但说x、y长度不等,经常遇到这种问题,怎样让两者长度相等
下一个:用matlab读取jpg图片,并提取RGB值放到三个二维数组里,然后提取绿色均值,红色均值特征.要完整程序.

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,