⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 理想光子晶体的透射模宽度分布.m

📁 该程序用于计算理想光子晶体的透射模宽度分布
💻 M
字号:

%理想光子晶体的透射模宽度分布
clear

%计算透射谱(20层)
na=3.0;
nb=1.0 ;
a=1.0;
b=3.0;
c=0.001*pi/(na*a+nb*b); 

x=[0,0,0,0];
z=[0,0,0,0];

for A=1:8100
     ba=A*c*na*a;
     bb=A*c*nb*b;
     d1=cos(ba);d2=sin(ba);
     d3=cos(bb);d4=sin(bb);
     xa=[d1,d2/na;-na*d2,d1];
     xb=[d3,d4/nb;-nb*d4,d3];
     x=xb*xa;
     z=x^10;
   % r=((z(2,2)-z(1,1))-i*(z(1,2)+z(2,1)))/((z(2,2)+z(1,1))-i*(z(1,2)-z(2,1)));
   %R(A)=abs(r)^2;
    t=2/((z(2,2)+z(1,1))-i*(z(1,2)-z(2,1)));
    T(A)=abs(t)^2;
end


%确定透射谱峰谷位置
for A=1:8010
    h(A)=-1;
    l(A)=-1;
end
%谱峰位置
for A=2:8010
   if T(A)>T(A-1)       
       if T(A)>T(A+1)
           h(A)=T(A);
      end
    end
   %h(A,1)
end
%谱谷位置
for A=2:8000
   if T(A)<T(A-1)       
       if T(A)<T(A+1)
          l(A)=T(A);
        end
    end
  %l(A) 
end

%确定透射模宽度
A=1;B=0;C=0;n=0;
while A<8000
    if l(A)>0
    B=A+1;
   while h(B)<0,if B>8000,break,end,B=B+1;end
    C=B+1;
   while l(C)<0,if h(B)<0,break,end,if C>8000,break,end,C=C+1;end
    
  %计算并寄存透射模宽度
   if l(A)<0
   else
       if h(B)<0
       else
           if l(C)>0
           n=n+1;
     %直线型
     aa=l(A);ab=h(B);ac=l(C);a1=B-A;a2=C-B;aba=ab-aa;abc=ab-ac;
       w1=0.001*ab*a1/aba;w2=0.001*ab*a2/abc;
       if w1>w2
       w(n)=w2;  
   else
       w(n)=w1; 
   end
     
     u(n)=B;
 end
end
end
     
   end
   A=A+1;
end

%透射模宽度分布图
s=linspace(1,n,n);
qa=w(s);
qb=u(s)*0.001
plot(qb,qa,'.-k')
%xlim([46 70])
xlabel('Ω');
ylabel('W');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -