声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3437|回复: 7

[绘图技巧] 问matlab能不能画光学干涉图

[复制链接]
发表于 2008-10-29 14:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
matlab能不能画这中光学干涉图,如果可以麻烦指教y一下,谢谢。
圆的 1.jpg
直条纹的 3.jpg

[ 本帖最后由 sogooda 于 2008-10-30 12:58 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-10-29 15:25 | 显示全部楼层
应该可以的
这儿有个衍射的例子,你可以参考一下
(二)傅立叶变换方法:
在傅立叶变换光学中我们知道夫琅和费衍射场的强度分布就等于屏函数的功率谱。因此我们可以直接将光屏进行傅立叶变换,再处理得到衍射图样。
物体图像的生成可以直接由矩阵运算生成,也可利用Windows下的画图工具,生成一幅黑白图像,并调用命令函数imread()输入图像,输入的图像是一个巨大的二维矩阵,利用MATLAB函数库中的fft2()命令对该矩阵进行二位离散傅立叶变换,得到图像的频谱,该频谱是一个复数矩阵,然后用取模函数abs()对该复数矩阵取模,得到振幅谱矩阵,利用函数fftshift()对取模后的矩阵进行频谱位移,这是因为变换后的二维矩阵的直流分量位于图像的周边角,该函数交换矩阵的1、3象限和2、4象限,使直流分量移到频谱中心,从而使FFT频谱可视效果与实际图像相吻合。最后利用imshow()函数将图像显示出来。
编写程序如下:

clear
a=imread('E:\1.bmp');
grid on
figure(1)
imshow(a,[])
afft=fft2(a);
aabs=abs(afft);
aabss=fftshift(aabs);
figure(2)
imshow(aabss,[])
colormap(gray);
colorbar
figure(3)
plot(aabss)
colormap(gray);
figure(4)
meshc(aabss)
maxx1=max(max(aabss));

输入黑白或灰度的衍射屏图像,得到输出的衍射图样和光强分布。

评分

1

查看全部评分

发表于 2008-10-29 15:26 | 显示全部楼层
(一)衍射积分方法:
该方法首先是由衍射积分算出接收屏上的光强分布,然后根据该分布调制色彩作图,从而得到衍射图案。
1. 单缝衍射。
把单缝看作是np个分立的相干光源,屏幕上任意一点复振幅为np个光源照射结果的合成,对每个光源,光程差Δ=ypsinΦ,sinΦ=ys/D,光强I=I0(Σcosα)2+(Σsinα)2,其中α=2Δ/λ=πypys/λD
编写程序如下,得到图1
clear
lam=500e-9;
a=1e-3;D=1;
ym=3*lam*D/a;
ny=51;
ys=linspace(-ym,ym,ny);
np=51;
yp=linspace(0,a,np);
for i=1:ny
sinphi=ys(i)/D;
alpha=2*pi*yp*sinphi/lam;
sumcos=sum(cos(alpha));
sumsin=sum(sin(alpha));
B(i,:)=(sumcos^2+sumsin^2)/np^2;
end
N=255;
Br=(B/max(B))*N;
subplot(1,2,1)
image(ym,ys,Br);
colormap(gray(N));
subplot(1,2,2)
plot(B,ys);
发表于 2008-10-29 15:26 | 显示全部楼层
2. 杨氏双缝干涉
两相干光源到接收屏上P点距离r1=(D2+(y-a/2)2)1/2, r2=(D2+(y+a/2)2)1/2,相位差
Φ=2π(r2-r1)/λ,光强I=4I0cos2(Φ/2)
编写程序如下,得到图2
clear
lam=500e-9
a=2e-3;D=1;
ym=5*lam*D/a;xs=ym;
n=101;ys=linspace(-ym,ym,n);
for i=1:n
r1=sqrt((ys(i)-a/2).^2+D^2);
r2=sqrt((ys(i)+a/2).^2+D^2);
phi=2*pi*(r2-r1)./lam;
B(i,:)=sum(4*cos(phi/2).^2);
end
N=255;
Br=(B/4.0)*N
subplot(1,2,1)
image(xs,ys,Br);
colormap(gray(N));
subplot(1,2,2)
plot(B,ys)

评分

1

查看全部评分

发表于 2008-10-29 15:29 | 显示全部楼层
而且还能在数据库找到这篇文章,有帮助的
《基于MATLAB的光弹条纹提取技术》王钦亭
 楼主| 发表于 2008-10-29 15:40 | 显示全部楼层

谢谢科技在线

谢谢科技在线
发表于 2008-10-30 11:23 | 显示全部楼层
还有一个光栅衍射的例子

公式:I=I0(sinα/α)2(sin(λβ)/sinβ)2
α=(πa/λ)sinΦ
β=(πd/λ)sinΦ
编写程序如下:得到图3
clear
lam=500e-9;N=2;
a=2e-4;D=5;d=5*a;
ym=2*lam*D/a;xs=ym;
n=1001;
ys=linspace(-ym,ym,n);
for i=1:n
sinphi=ys(i)/D;
alpha=pi*a*sinphi/lam;
beta=pi*d*sinphi/lam;
B(i,:)=(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2;
B1=B/max(B);
end
NC=255;
Br=(B/max(B))*NC;
subplot(1,2,1)
image(xs,ys,Br);
colormap(gray(NC));
subplot(1,2,2)
plot(B1,ys);
发表于 2009-3-14 22:45 | 显示全部楼层
顶一个,求干涉的程序
正在痛苦的编程-ing中
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 10:33 , Processed in 0.081714 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表