% 参数设置
lambda = 500e-9; % 光的波长 (米)
D = 1e-3; % 三角孔边长 (米)
z = 0.01; % 衍射距离 (米)
k = 2 * pi / lambda; % 波数
% 计算光源区域
L = 5e-3; % 计算区域边界 (米)
N = 512; % 像素数
x = linspace(-L/2, L/2, N);
y = linspace(-L/2, L/2, N);
[X, Y] = meshgrid(x, y);
% 创建三角孔
tri_half_height = D * sqrt(3) / 2; % 三角形半高
mask = (Y >= 0) & (Y <= tri_half_height) & (abs(X) <= (Y / sqrt(3)));
% 光波前的幅度分布
U0 = zeros(N, N);
U0(mask) = 1; % 三角孔处的光强度
% 计算衍射场 (使用FFT)
U1 = fftshift(fft2(U0));
% 确定频域坐标
fx = linspace(-1/(2*(L/N)), 1/(2*(L/N)), N);
fy = linspace(-1/(2*(L/N)), 1/(2*(L/N)), N);
[FX, FY] = meshgrid(fx, fy);
% 计算衍射图样
H = exp(1j * k * z * sqrt(1 - (lambda * FX).^2 - (lambda * FY).^2));
U2 = U1 .* H; % 乘以传播函数
I = abs(ifft2(fftshift(U2))).^2; % 逆FFT得到衍射图样
% 绘制结果
figure;
imagesc(x, y, I);
axis equal;
axis tight
colormap hot;
xlabel('X (m)');
ylabel('Y (m)');
title('Diffraction Pattern of a Triangular Aperture');
colorbar;
代码解释:
参数设置:定义光波的波长、三角孔边长、衍射距离等。
计算光源区域:创建一个计算区域,以便用于设置三角孔的形状。
创建三角孔:使用条件生成一个掩模,定义三角形的区域。
光波前的幅度分布:初始化光波在孔处的幅度分布。
FFT计算:对光波前进行二维FFT并乘以传播函数以计算衍射场。
逆FFT得到衍射图样:使用逆FFT得到衍射后的光强分布并进行绘制。
注意事项:
确保你已经安装并设置好 MATLAB 环境。
可以根据需要调整参数以观察不同结合的衍射效果。
运行上述代码后,将会显示通过三角孔的光衍射图样。
欢迎广大读者朋友投稿,内容与光学研究相关即可,可以介绍和宣传自己工作,研究团队介绍,知识分享等,内容不限!
为了方便交流,我们建立了科研交流群,入群的朋友可添加以下微信号,添加时请备注添加交流群。(微信:qiangqiang093)
免责声明:本公众号旨在传递更多科研相关内容及分享,所有文章图片来源均注明出处,如涉及版权问题,请作者第一时间后台联系,我们将协调进行处理,对于投稿内容文责自负。