基于Matlab——夫琅禾夫衍射以及菲涅尔衍射

news/2024/11/15 7:01:38/

        我以往在学习F分析的时候,编写了一个作业代码,在此附上供大家学习交流。

 

引言:

    在傅里叶光学信息基础中,主要研究的是光在传播过程携带的信息如何去检测得到。如果光在自由空间(均匀介质)中的传播,那么光的性质(方向、频率)将不发生改变。我们易去得到它携带的信息,比如光强、频率。但是,当光在空间中遇到了障碍物(比如圆孔、矩形孔等),那么光的波动性将会显著表达。在接受屏上我们可以看到衍射现象,即光偏离原方向传播。在衍射现象中,我们一般分为夫琅禾夫衍射和菲涅尔衍射。从基尔霍夫衍射理论和角谱理论出发,实验现象和理论符合较好。针对圆孔和矩形孔,本文将用Matlab语言对夫琅禾夫衍射和菲涅尔衍射进行数值模拟。

理论:

    (1)菲涅尔衍射公式:

       观察平面距离z条件:

    (2)夫琅禾夫衍射公式:

       观察平面距离z条件:

代码:

%% --------------------------------------------------------------------------%%
%% 清除空间
clear;
clc;
%% 夫琅禾夫衍射--圆孔
%%  三维--解析法
a=8.5*10^-2;%半径
lambda=632*10^(-9);%波长
z=a^(2)/lambda*100;%距离
N=16;%空间范围
L=512;%采样点
[x, y]=meshgrid(linspace(-N,N,L));%网格
p=sqrt(x.^2+y.^2);%每个点直接的距离
m=2*pi*a*p/z/lambda;%自变量
j1=besselj(1,m);%贝塞尔
i_0=(2*pi*a^(2)/(2*z*lambda))^2;%初始光强
i=i_0*(2*j1./m).^2;%透射光强
figure()%画图
mesh(x,y,i);%三维
zlabel('强度')
xlabel('X方向')
ylabel('Y方向')
title('圆孔-夫琅禾夫衍射')
grid on;%上色
colormap;%显色
colorbar;%颜色棒
%%  三维--快速傅里叶变换
figure()
z1=zeros(L,L);%透射空间
for i =1:L%在透射空间中画出圆形,圆形内部透射率为1for j =1:Lif x(i,j)^2+y(i,j)^2<=a%判断距离z1(i,j)=1;%透射率为1end end
end
d=fftshift(abs((fft2(z1)).^2));%快速傅里叶变换,并移动坐标为原点
mesh(x,y,d);%三维
zlabel('强度')
xlabel('X方向')
ylabel('Y方向')
title('圆孔-夫琅禾夫衍射')
grid on;%上色
colormap;%显色
colorbar;%颜色棒
%% 下面参数基本相同不做标记
%% 二维--解析法
figure()
p_1=-10:0.0001:10;
m_1=2*pi*a*p_1/z/lambda;
j1=besselj(1,m_1);
i_1=(2*j1./m_1).^2;
plot(m_1,i_1)
xlabel('离几何中心距离')
ylabel('强度')
title('圆孔-夫琅禾夫衍射')
%% 二维--快速傅里叶变换
figure()
p_1=linspace(-8,8,L);
d=fftshift(abs((fft2(z1)).^2));
plot(p_1,d(L/2,:))
xlabel('离几何中心距离')
ylabel('强度')
title('圆孔-夫琅禾夫衍射')
%% 菲涅尔衍射-圆孔
%%  三维--快速傅里叶变换
figure()
z=a^(2)*pi/4/lambda*100;
z1=zeros(L,L);
z2=zeros(L,L);
for i =1:Lfor j =1:Lif x(i,j)^2+y(i,j)^2<=az1(i,j)=1;z2(i,j)=x(i,j)^2+y(i,j)^2;end end
end
d=fftshift(abs((fft2(z1.*exp(1i*2*pi/lambda/2/z*z2))).^2));
i_2=d;
mesh(x,y,i_2);grid on;
zlabel('强度')
xlabel('X方向')
ylabel('Y方向')
title('圆孔-菲涅尔衍射')
colormap;
colorbar;
%% 二维--快速傅里叶变换
figure()
p_1=linspace(-8,8,L);
d=fftshift(abs((fft2(z1.*exp(1i*2*pi/lambda/2/z*z2))).^2));
plot(p_1,d(L/2,:))
xlabel('离几何中心距离')
ylabel('强度')
title('圆孔-菲涅尔衍射')
%% 夫琅禾夫衍射--方形孔
%%  三维--解析法
a=8.5*10^-2;
b=8.5*10^-2;
lambda=573.3*10^(-9);
N=32;L=1024;
z=a^(2)/lambda*100;
[x,y]=meshgrid(linspace(-N,N,L));
p1=x.*a/(lambda*z);p2=y.*b/(lambda*z);
i_0=(a*b/(lambda*z))^2;
i=i_0*(sinc(p1).^2).*(sinc(p2).^2);
figure()
mesh(x,y,i);grid on;
zlabel('强度')
xlabel('X方向')
ylabel('Y方向')
title('方形孔-夫琅禾夫衍射')
colormap;
colorbar;
%% 菲涅尔衍射-方形孔
%%  三维--快速傅里叶变换
a=2.25*10^-1;
b=2.25*10^-1;
lambda=573*10^(-9);
N=32;L=1024;
z=a^(2)*pi/4/lambda*500;
[x,y]=meshgrid(linspace(-N,N,L));
z1=zeros(L,L);
z2=zeros(L,L);
for i =1:Lfor j =1:Lif abs(x(i,j))<=a && abs(y(i,j))<=bz1(i,j)=1;z2(i,j)=x(i,j)^2+y(i,j)^2;end end
end
d=fftshift(abs((fft2(z1.*exp(1i*2*pi/lambda/2/z*z2))).^2));
figure()
mesh(x,y,d);grid on;
zlabel('强度')
xlabel('X方向')
ylabel('Y方向')
title('方形孔-菲涅尔衍射')
colormap;
colorbar;
%% --------------------------------------------------------------------------%%

运行结果中的一个:

        

 


(凑字数)傅里叶光学的本质就是利用线性叠加的正交坐标函数集去表述一个复杂的函数,从而更简单地去处理复杂函数所带给我们的信息。而在实际应用上,由于器件的限制,我们通常做的就是利用离散的器件以及狄拉克函数性质去描述一个空间点的信息,然后相加求和去近似的描述原本连续的函数关系,也就是实际效果,比如单缝衍射等。简而言之,就是利用离散描述连续,是傅里叶方法应用在光学处理上的核心。 

        同时大家觉得有什么问题和建议欢迎留言。


http://www.ppmy.cn/news/781701.html

相关文章

菲涅尔波带片

菲涅尔波带片 菲涅尔波带片最早是最为一类特殊结构的圆形光栅被提出&#xff0c;它由一系列明暗交替的同心圆环组成。1818 年&#xff0c;Fresnel 首次提出了波带片的概念。英国物理学家 Lord Rayleigh 在 1871 年制作出了第一块菲涅尔波带片。可是由于当时在可见光谱区折射透镜…

mysql语句练习题,创建表,枚举中文字符集设置,修改(update)

作业&#xff1a; 1.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09;&#xff0c;name&#xff08;员工名字&#xff09;&#xff0c;gender&#xff08;员工性别&#xff09;&#xff0c;salary&#xff08;员工薪…

Day60 | 84.柱状图中最大的矩形

Day60 | 84.柱状图中最大的矩形 柱状图中最大的矩形 LeetCode题目&#xff1a;https://leetcode.cn/problems/largest-rectangle-in-histogram/ 本题与接雨水相似&#xff0c;但有所不同。如果在该题中维护一个从栈顶到栈底单调递增的单调栈&#xff0c;那么计算的面积都会被…

秀米的对话框格子可以变大吗_如何使用秀米进行排版(对外版)课件.ppt

如何使用秀米进行排版(对外版)课件 点击边框&#xff0c;出现要求输入视频地址的输入框。 此处只能插入来源是腾讯视频的。 砒呢鲸剿虎染推清资项雄爽瞄膘询赡夏烹檄涛力格赘嗡适巧卢扶蛊迟痹痊如何使用秀米进行排版(对外版)课件如何使用秀米进行排版(对外版)课件 在视频的播放…

渐变色字体有时候不显示问题

1.使用渐变色的字在经过插件px转rem之后&#xff0c;渐变色的字会出现不显示的问题 用下面的代码解决 background: linear-gradient(0deg, #807de1 0%, #218cde 100%);background-clip: text;-webkit-background-clip: text;-webkit-text-fill-color: transparent;就可以解决转…

秀米编辑器如何排版svg推文,以展开为模板讲解

前期准备 1、打开秀米官网&#xff0c;点击右上角登录&#xff08;建议微信登录&#xff09; https://xiumi.us/#/ 2、如果想在秀米排版的能同步到公众号&#xff0c;请授权一下公众号&#xff0c;具体参考以下两篇文章 http://www.coozhi.com/youxishuma/hulianwang/80847.ht…

点击换图 秀米的svg_时隔五年再用秀米,我发现了这个超强玩法。

Hello,开局三张图…… 我是口出狂言,然后被按着写教程的水韬。 有人说新媒体编辑们19年不会条漫,2020不会代码就要被淘汰,这可真的太难了…… 2020年以来,很多交互式的刷屏级推文,这些玩法最稳定的方式都是通过 代码,包括武汉解封点亮图片、动态展开、小瓶子等等花样玩法…

Java输入

在编程中&#xff0c;需要接收用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。Input.java&#xff0c;需要一个扫描器&#xff08;对象&#xff09;&#xff0c;就是Scanner 导入该类所在的包 java.utill.*创建该类对象&#xff08;声明变量&#xff09;调用里面的…