请问这段matlab程序哪里错了?

问题描述:

请问这段matlab程序哪里错了?
clc
clear all
h=1;c=3*10^8; Eps0=10^-9/(36*pi);u0=4*pi*10^-7;
epslona=5.5225;ua=1.0;na=epslona^0.5;a=2*pi*4.8797e-008;%a=120*7e-9;
epslonb=1.9044;nb=epslonb^0.5;ub=1;b=2*pi*4.8797e-008;%ab=240*7e-9
%nb=3.23;epslonb=nb^2;ub=1;b=180/nb*h;na=1.0;epslona=na^2;ua=1.0;a=180/na*h;
d=a+b;
w0=pi*c/(na*a+nb*b);
k=0;
p=0;
for sigma1=(0:0.01:0.3)*pi;%入射角
p=p+1
for w=(0:0.01:3)*w0;
k=k+1
chain='ABABABABABABABABABABA';
m=[1,0
0,1];
for n=1:21
switch chain(n);
case('A');
deltaa=-w./c*sqrt(epslona)*a*cos(sigma1);
etaa=sqrt(Eps0*epslona/u0)*cos(sigma1);
mj=[cos(deltaa),-(i/etaa)*sin(deltaa)
-(i*etaa)*sin(deltaa),cos(deltaa)];
case('B');
deltab=-w./c*sqrt(epslonb)*b*cos(sigma1);
etab=sqrt(Eps0*epslonb/u0)*cos(sigma1);
mj=[cos(deltab),-(i/etab)*sin(deltab)
-(i*etab)*sin(deltab),cos(deltab)];
end
m=m*mj;
end
eta01=sqrt(Eps0)/sqrt(u0)*cos(sigma1);
etaN1=eta01;
t1=2/(m(1,1)+m(1,2).*etaN1+m(2,1)./eta01+m(2,2).*etaN1/eta01);
x=sigma1
y1(k)=w./w0;
end
z1(p)=abs(t1);
end
figure(1)
surf(x,y1,z1)
xlable('x');ylabel('w/w0');zlabel('transsimation');
显示结果为:warning:Matrix dimensions must agree,not rendering mesh.
1个回答 分类:综合 2014-09-25

问题解答:

我来补答
循环里面对x、y1、z1赋值部分搞的很乱,得到的结果根本无法绘制曲面.另外xlable写错了.我给改了一下,马马虎虎能用,算不上太好的做法.曲面的显示效果也做了一些调整. 代码已作为附件上传,效果图如下:
 
 
展开全文阅读
剩余:2000
上一页:这一步看不懂
下一页:这题详细解释
也许感兴趣的知识