1. 代码
clear all;
close all;
% 定义常数
lambda = 632.8e-9; % 波长单位m
k = 2 * pi / lambda; % 波数
z = 1; % 距离单位m
a = 1e-3; % 光阑半径单位m
N = 1024; % 采样点数
L = 10e-3; % 采样区域大小单位m
% 生成采样点
x = linspace(-L/2, L/2, N);
y = linspace(-L/2, L/2, N);
[X, Y] = meshgrid(x, y);
% 定义衍射场[函数]
u = @(x, y) exp(1i * k * sqrt(x.^2 + y.^2 + z^2)) ./ sqrt(x.^2 + y.^2 + z^2);
% 计算衍射场
U = u(X, Y);
% 计算瑞利-索末菲衍射
m = 4;
for i = 1:m
figure(i);
I = abs(U).^2 .* (2 * besselj(i, k * a * sqrt(X.^2 + Y.^2) / z) ./ (k * a * sqrt(X.^2 + Y.^2) / z)).^2;
imagesc(x, y, I);
axis equal tight;
colormap('gray');
xlabel('x (m)');
ylabel('y (m)');
title([num2str(i),'阶besselj光束'],'瑞利-索末菲衍射');
end
2. 结果