get_slab_field.m

来自「matlab例程」· M 代码 · 共 14 行

M
14
字号
function field_total=get_slab_field(h,n,n_eff)
global k0 lastlayer_num;
layer_num=length(h);
field=zeros(2,layer_num);
field(1,1)=1;
gamma=zeros(1,layer_num);
gamma=sqrt(n_eff^2*k0^2-n.^2*k0^2);
for t1=1:layer_num-1
   D=[gamma(t1+1)+gamma(t1) gamma(t1+1)-gamma(t1);gamma(t1+1)-gamma(t1) gamma(t1+1)+gamma(t1)]/(2*gamma(t1+1));
   E=[exp(gamma(t1+1)*h(t1+1)) 0;0 exp(-gamma(t1+1)*h(t1+1))];
   field(:,t1+1)=E*D*field(:,t1);
end
%field(1,layer_num-lastlayer_num+1:layer_num)=0;
field_total=[1 1]*field;

⌨️ 快捷键说明

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