24小时热门版块排行榜    

CyRhmU.jpeg
查看: 448  |  回复: 4
当前主题已经存档。
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

yes_zhu

铁杆木虫 (著名写手)

[交流] 【求助】matlab 小程序求助【已完成】

% Constant
% *********************************************
theta=[0:0.1:90]; % inciden angle in triple prism
lambda=1550;  %incident wavelength
d1=30; % thckness of the secondary layer
d2=20; % thickness of the third layer,nm
e0=1;%dielectric constant of photoresist with semiinfinity thickness
e1=-95.92+i*10.97;    % dielectric constant of air gap
e2=1;    %dielectric constant of polymer
e3=1.444^2;% dielectric constant of metal
% e4=2.295;% dielectric constant of polymer
% e5=3.24; % dielctric constant of  prism
e=[e0;e1;e2;e3];
d=[d1;d2];
%**********************************************
k0=2*pi./lambda;
beta=k0.*sqrt(e(end))*sind(theta);
for i=1:max(size(e))
    alpha(i,=sqrt(-beta.^2+k0.^2.*e(i));
end
% alpha0=sqrt(-beta.^2+k0.^2.*e(1));
% alpha1=sqrt(-beta.^2+k0.^2.*e(2));
% alpha2=sqrt(-beta.^2+k0.^2.*e(3));
% alpha3=sqrt(-beta.^2+k0.^2.*e(4));
% *********************************************
% reflectivity of inter-layers  
% *********************************************
for j=1:max(size(e))-1
    a1=e(j).*alpha(j+1,-e(j+1).*alpha(j,;
    b1=e(j).*alpha(j+1,+e(j+1).*alpha(j,;
    r(j,=a1./b1;
end
%  r_01=(e0.*alpha1-e1.*alpha0)./(e0.*alpha1+e1.*alpha0);
%  r_12=(e1.*alpha2-e2.*alpha1)./(e1.*alpha2+e2.*alpha1);
%  r_23=(e2.*alpha3-e3.*alpha2)./(e3.*alpha2+e2.*alpha3);


r_stack=r(1,;
for k=1:max(size(e))-2
    a2=r(k+1,+r_stack.*exp(2.*alpha(k+1,*d(k)*i);
    b2=1+r(k+1,.*r_stack.*exp(2.*alpha(k+1,*d(k)*i);
    r_stack=a2./b2;
end

% r_012=(r_12+r_01.*exp(2.*alpha1*d1*i))./(1+r_12.*r_01.*exp(2.*alpha1*d1*i));
% r_0123=(r_23+r_012.*exp(2.*alpha2*d2*i))./(1+r_23.*r_012.*exp(2.*alpha2*d2*i));

R=abs(r_stack).^2;  
plot(theta,R)

上面的程序可以运行,但是结果不对,不知道哪位高手指出问题。各个循环表示的数学式子已经已经写在注释里。

[ Last edited by 0112358 on 2009-9-21 at 13:42 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

woshilsh

荣誉版主 (职业作家)

优秀版主


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by yes_zhu at 2009-9-21 10:39:
3楼的建议是对的。我将i,j改换了就得到正确的了。这个问题在编程时考虑到了,但是没有重视。谢谢3楼的提醒。

[ Last edited by yes_zhu on 2009-9-21 at 10:47 ]

呵呵,搞定就好!
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
5楼2009-09-21 11:28:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

woshilsh

荣誉版主 (职业作家)

优秀版主


yes_zhu(金币+1,VIP+0):正如3楼理解的 9-21 10:39
兄弟你想得到什么结果,最好说说,大家好帮改,呵呵
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
2楼2009-09-21 00:08:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yeyunxiao

铁杆木虫 (小有名气)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
0112358(金币+5,VIP+0):鼓励交流,欢迎常来程序版应助回帖 9-21 09:53
yes_zhu(金币+9,VIP+0):谢谢建议 9-21 10:43
0112358(金币+9,VIP+0):正确解答,追加楼主同等数额奖励 9-21 13:38
0112358(金币-4,VIP+0):忘记前面已经给了你5个了,收回。本来无所谓的,不过后来一看我们是同一ip,我得避嫌一下,免得落下话柄 9-21 13:41
把楼主的程序整理了一下

我猜,楼主大概是算想画一种反射率随角度变化的图

希望楼主能详细的说明你程序的目的,数学思想
并且把注释写的详细清楚一些,良好的编程习惯很重要哦!

目前我的疑问是,不知道你的中间步骤的数学含义

还有

a2 = r(k+1, : ) + r_stack .* exp( 2 .* alpha(k+1, : ) * d(k) * i );
b2 = 1 + r(k+1, : ) .* r_stack .* exp( 2 .* alpha(k+1, : ) * d(k) * i );

这两句代码里面的 i 是代表虚数,还是你前面定义的那个 i
最好不要用 i 和 j 来做遍历,这是matlab的虚数

% Constant
% *************************************************************************
theta   =   [0:0.1:90];             % inciden angle in triple prism          三角棱镜入射角
lambda  =   1550;                   % incident wavelength                    入射光波长
d1      =   30;                          % thickness of the secondary layer 第二层厚度
d2      =   20;                          % thickness of the third layer,nm    第三层厚度
e0      =   1;                            % dielectric constant of photoresist with semiinfinity thickness    半无限厚光刻胶介电常数
e1      =   - 95.92 + i * 10.97; % dielectric constant of air gap      空气沟道介电常数
e2      =   1;                           % dielectric constant of polymer     聚合物介电常数
e3      =   1.444^2;                % dielectric constant of metal         金属介电常数
% e4    =   2.295;                  % dielectric constant of polymer     聚合物介电常数
% e5    =   3.24;                    % dielctric constant of  prism          棱镜介电常数
e       =   [e0; e1; e2; e3];
d       =   [d1; d2];
%**************************************************************************
k0   = 2 * pi ./ lambda;                                                    %波矢
beta = k0 .* sqrt( e(end) ) * sind(theta);
for i = 1 : max( size(e) )
    alpha( i, : ) = sqrt( - beta.^2 + k0.^2 .* e(i) );
end
% alpha0=sqrt(-beta.^2+k0.^2.*e(1));
% alpha1=sqrt(-beta.^2+k0.^2.*e(2));
% alpha2=sqrt(-beta.^2+k0.^2.*e(3));
% alpha3=sqrt(-beta.^2+k0.^2.*e(4));
% *************************************************************************
% reflectivity of inter-layers  
% *************************************************************************
for j = 1 : max( size(e) ) - 1
    a1 = e(j) .* alpha(j+1, : ) - e(j+1) .* alpha(j, : );
    b1 = e(j) .* alpha(j+1, : ) + e(j+1) .* alpha(j, : );
    r(j, : ) = a1 ./ b1;
end
%  r_01=(e0.*alpha1-e1.*alpha0)./(e0.*alpha1+e1.*alpha0);
%  r_12=(e1.*alpha2-e2.*alpha1)./(e1.*alpha2+e2.*alpha1);
%  r_23=(e2.*alpha3-e3.*alpha2)./(e3.*alpha2+e2.*alpha3);


r_stack = r(1, : );
for k = 1 : max( size(e) ) - 2
    a2 = r(k+1, : ) + r_stack .* exp( 2 .* alpha(k+1, : ) * d(k) * i );
    b2 = 1 + r(k+1, : ) .* r_stack .* exp( 2 .* alpha(k+1, : ) * d(k) * i );
    r_stack = a2 ./ b2;
end

% r_012=(r_12+r_01.*exp(2.*alpha1*d1*i))./(1+r_12.*r_01.*exp(2.*alpha1*d1*i));
% r_0123=(r_23+r_012.*exp(2.*alpha2*d2*i))./(1+r_23.*r_012.*exp(2.*alpha2*d2*i));

R = abs(r_stack).^2;  
plot(theta ,R)

[ Last edited by yeyunxiao on 2009-9-21 at 08:48 ]
3楼2009-09-21 08:47:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yes_zhu

铁杆木虫 (著名写手)

3楼的建议是对的。我将i,j改换了就得到正确的了。这个问题在编程时考虑到了,但是没有重视。谢谢3楼的提醒。

[ Last edited by yes_zhu on 2009-9-21 at 10:47 ]
4楼2009-09-21 10:39:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见