作业帮 > 综合 > 作业

matlab的一些问题

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/18 10:16:26
matlab的一些问题
对于以下程序
na=2.10;nb=1.46;n1=1;n2=1;
for d=400:1600;
c3=0;c1=asin(n1*sin(c3)/na);c2=asin(na*sin(c1)/nb);c4=asin(nb*sin(c2)/n2);
d1=1064;
a=d1/(4*na);b=d1/(4*nb);
Ba=2*pi*na*a*cos(c1)/d;
Bb=2*pi*nb*b*cos(c2)/d;
f=4*pi*1e-7;
e=1e-9/(36*pi);
m=sqrt(e/f);
za=m*cos(c1)*na;zb=m*cos(c2)*nb;z1=f*cos(c3)*n1;z2=f*cos(c4)*n2;
p1=cos(Bb);p2=-i*sin(Bb)/zb;p3=-i*zb*sin(Bb);p4=cos(Bb);
P=[p1 p2;p3 p4];
q1=cos(Ba);q2=-i*sin(Ba)/za;q3=-i*za*sin(Ba);q4=cos(Ba);
Q=[q1 q2;q3 q4];
O=Q*P;O1=O^27;
O11=O1(1,1);O12=O1(1,2);O13=O1(2,1);O14=O1(2,2);
z1=sqrt(e/f)*n1*cos(c3);z2=sqrt(e/f)*n2*cos(c4);
t=2*z1/(z1*(O11+z2*O12)+O13+z2*O14);
r=(z1*(O11+z2*O12)-O13-z2*O14)/(z1*(O11+z2*O12)+O13+z2*O14);
t1=abs(t);
r1=abs(r);
s=d-399;
k(1,s)=t1;
end
d=400:1600;
plot(d,k)
能不能不用s=d-399; k(1,s)=t1; plot(d,k)来进行画图.如果要取几万个点,最后几行可不可以直接写成t1=abs(t);
r1=abs(r);
end
d=400:1600;
plot(d,t1)
没什么错误,为什么出不来图呢
matlab的一些问题
运行后可以看出,t1只有一个值,那就是当d=1600时的t1的值.那你最后plot(d,t1),d大小1201,t1只有一个值,出来的图肯定不对.采用循环,得到所有的t1值即可.修改的部分如下:d=400:1600;for ii=1:length(d).Ba=2*pi*na*a*cos(c1)/d(ii);Bb=2*pi*nb*b*cos(c2)/d(ii);...t1(ii)=abs(t);r1=abs(r);endplot(d,t1)
再问: 非常感谢,解决了我一个大问题