matlab模拟小孔衍射
时间: 2023-08-31 21:05:08 浏览: 190
基于matlab模拟圆孔单色衍射仿真.zip
小孔衍射是物理光学中经典的实验,它指的是光通过小孔之后发生的衍射现象。在 Matlab 中,可以通过模拟光的传播和衍射来模拟小孔衍射实验。
下面是一份简单的 Matlab 代码,用于模拟小孔衍射:
```
% 定义参数
wavelength = 632.8e-9; % 光波长
k = 2*pi/wavelength; % 波数
distance = 1e-3; % 距离
size = 10e-6; % 孔径尺寸
N = 1024; % 图像大小
L = N*size/distance; % 采样区域尺寸
% 生成一个方形孔
hole = zeros(N);
hole(N/2-size/2:N/2+size/2-1,N/2-size/2:N/2+size/2-1) = 1;
% 生成衍射图像
[X,Y] = meshgrid(-L/2:L/N:L/2-L/N);
r = sqrt(X.^2 + Y.^2);
theta = atan2(Y,X);
pupil = hole.*exp(1i*k*r.^2/(2*distance));
image = abs(fftshift(fft2(pupil))).^2;
% 显示结果
figure;
subplot(1,2,1);
imshow(hole);
title('孔');
subplot(1,2,2);
imshow(image,[]);
title('衍射图像');
```
上述代码将生成一个方形的小孔,并计算出在距离为 1 毫米处的衍射图像。在显示结果时,将分别显示孔和衍射图像。
可以尝试修改参数,比如改变孔径尺寸、距离、图像大小等,来观察不同的衍射效果。
阅读全文