取大步长 降低矩阵次方 试了一下,可以运行,你可以改回去 慢慢算。。
另外,建议不要用 循环,直接 向量化 计算可以加快运算效率
n0=1;
a0=0*pi/180;
n1=3.1;
n2=3.6;
N=2;
Lamda=700:5:900;
RR=zeros(1,length(Lamda));
for i=1:length(Lamda)
lamda=Lamda(i);
d1=68.5;
d2=59.02;
a1=asin(n0*sin(a0)/n1);
a2=asin(n1*sin(a1)/n2);
a3=asin(n2*sin(a2)/n0);
p1=2*pi*n1*d1*cos(a1)/lamda;
p2=2*pi*n2*d2*cos(a2)/lamda;
u0=4*pi*1e-7;
e0=1e-9/(36*pi);
b=sqrt(e0/u0);
c1=b*n1*cos(a1);
c2=b*n2*cos(a2);
c0=b*n0*cos(a0);
c00=b*n0*cos(a3);
A1=cos(p1);B1=-i*sin(p1)/c1;C1=-i*c1*sin(p1);D1=cos(p1);
M1=[A1 B1;C1 D1];
A2=cos(p2);B2=-i*sin(p2)/c2;C2=-i*c2*sin(p2);D2=cos(p2);
M2=[A2 B2;C2 D2];
M=(M1*M2)^N;
A=M(1,1);B=M(1,2);C=M(2,1);D=M(2,2);
r=(A*c0+B*c0*c00-C-D*c00)/(A*c0+B*c0*c00+C+D*c00);
t=(2*c0)/(A*c0+B*c0*c00+C+D*c00);
R=r*conj(r);
T=t*conj(t);
RR(i)=real(R);
end
figure;
plot(Lamda,RR);,