光电工程师社区
标题:
求用MATLAB仿真F-P滤光片的程序
[打印本页]
作者:
卫卫
时间:
2012-6-7 00:53
标题:
求用MATLAB仿真F-P滤光片的程序
RT,感觉自己编程思路应该没错,但仿真出来的透射率结果完全不对。按照传输矩阵法来设计的。
作者:
tfc
时间:
2012-6-7 07:55
一个是用的公式对不对,一个是你矩阵编程对不对,人家软件已经很成熟了,你干嘛还重复做别人已经做过的呢?
你编程语言是什么?
作者:
卫卫
时间:
2012-6-7 10:33
tfc 发表于 2012-6-7 07:55
一个是用的公式对不对,一个是你矩阵编程对不对,人家软件已经很成熟了,你干嘛还重复做别人已经做过的呢? ...
是做的毕业设计呀,弄了几天波形图还是不对,我用的代码如下
clear all;
n0=1;na=1.45;nb=2.05;ns=1.52%折射率
V=[1;ns];%基板折射率矩阵
n=input('输入1光学薄膜的周期数:');
m=input('输入2光学薄膜的周期数:');
theta1=input('输入入射角:');
da=(390/1.45)*1e-9;
db=(390/3.16)*1e-9;
daa=(2*390/1.45)*1e-9
for lambda=1480:1600;
theta2=asin(n0*sin(theta1)/na);%介质A中的折射角
theta3=asin(n0*sin(theta1)/nb);%介质B中的折射角
deltaa=2*pi*na*da*cos(theta2)/lambda*1e9;
deltab=2*pi*nb*db*cos(theta3)/lambda*1e9;%由于波长取值不是SI单位制,此处化为SI单位制
deltaa2=2*pi*na*daa*cos(theta2)/lambda*1e9;
eta0=n0*cos(theta1);
etaa=na*cos(theta2);
etab=nb*cos(theta3);
%传输矩阵特征参数
MA1=cos(deltaa);
MA2=i*sin(deltaa)/etaa;
MA3=i*etaa*sin(deltaa);
MA4=cos(deltaa);
MA=[MA1,MA2;MA3,MA4];%介质A中传输矩阵
MAA1=cos(deltaa2);
MAA2=i*sin(deltaa2)/etaa;
MAA3=i*etaa*sin(deltaa2);
MAA4=cos(deltaa2);
MAA=[MAA1,MAA2;MAA3,MAA4];%2L层
MB1=cos(deltab);
MB2=i*sin(deltab)/etab;
MB3=i*etab*sin(deltab);
MB4=cos(deltab);
MB=[MB1,MB2;MB3,MB4];%介质B中传输矩阵
O=MA*MB;%介质A和介质B等效层的传输矩阵LH
P=MB*MA;%HL
Q=P^n*MB*MAA*MB*O^n;
U=P^m*MB*MAA*MB*O^m;
M=(Q*MA*U*MA*U*MA*Q)*V;% n层光学薄膜总的传输矩阵
B=M(1,1);
C=M(2,1);
r=(n0*B-C)/(n0*B+C);
R=r*r';
T=(4*n0*ns)/((n0*B+C)*((n0*B+C)'));
s=lambda-1480+1;%对选取的数据点进行编号,以方便下一步存储
k(1,s)=T;%建立存储数据的向量,以方便下一步作图
end
lambda=1480:1600;
plot(lambda,k);
xlabel('\lambda/nm');
ylabel('T');
感觉矩阵设定,公式也没什么错啊,自己看不出来,我先考虑垂直入射的所以有关折射角那块的cos值都是1
作者:
卫卫
时间:
2012-6-7 10:58
tfc 发表于 2012-6-7 07:55
一个是用的公式对不对,一个是你矩阵编程对不对,人家软件已经很成熟了,你干嘛还重复做别人已经做过的呢? ...
麻烦给我看下 万分感谢
作者:
legendlyy
时间:
2012-6-7 11:03
i=sqrt(-1);
作者:
卫卫
时间:
2012-6-7 11:27
出来的结果就是个1560NM左右范围的三角波,= =
作者:
卫卫
时间:
2012-6-7 17:58
求帮助 求帮助
作者:
tfc
时间:
2012-6-8 10:24
我还是没法帮到你,改程序一定要会这种编程语言,一步步调试才行,我投降,也许你把光学原来的公式,和你要怎么做都详细描述清楚,再加你的程序,拿到MATLAB编程论坛,或者C语言论坛,估计他们有办法,因为他们对算法相当精通。如果你想自己再调试,建议你调试时的光学厚度大于1600nm的6个光学厚度以上,并且列出每nm的T%表,便与你追踪,容易看出变化。
作者:
otxtc
时间:
2012-6-8 15:48
把你的思路用伪代码写一遍,这样大家就都能看懂了。
1. 先简化一下, 没有膜层, 或膜层厚度为0,看结果对不对。
不用画图,看数据就知道了。
2. 加单层膜,折射率 取1.0, 再算。
3.再改折射率、加层、加角度、加输出图形。 再添加你想要的花样。
//话说回来,必要真不大,不过练手熟悉一下光学薄膜计算过程倒也好玩。
作者:
卫卫
时间:
2012-6-12 19:58
谢谢各位了,基本找到问题所在了,是步长相对带宽取的太大了,我取的默认数值1了= =
作者:
huangjingyi
时间:
2013-6-22 17:45
好难啊。。。。
欢迎光临 光电工程师社区 (http://bbs.oecr.com/)
Powered by Discuz! X3.2