Fraunhofer矩形形孔径衍射matlab仿真,代码显示给我
时间: 2024-03-10 09:46:33 浏览: 114
hsimatlab代码-RectangularDiffraction:MATLAB可视化的Fraunhofer矩形Kong径光的衍射
以下是一个简单的 MATLAB 代码,可以用于模拟 Fraunhofer 矩形形孔径衍射:
```matlab
% 定义矩形孔的大小和形状
a = 0.05; % 孔的宽度
b = 0.1; % 孔的高度
d = 0.5; % 孔到屏的距离
n = 512; % 屏幕像素数目
% 生成坐标网格
xmin = -1;
xmax = 1;
ymin = -1;
ymax = 1;
x = linspace(xmin, xmax, n);
y = linspace(ymin, ymax, n);
[X, Y] = meshgrid(x, y);
% 计算衍射场
k = 2 * pi / 0.5; % 光的波数
r = sqrt(X.^2 + Y.^2); % 到中心点的距离
theta = atan2(Y, X); % 到中心点的角度
H = zeros(n); % 衍射场
for i = 1:n
for j = 1:n
if abs(X(i, j)) < a / 2 && abs(Y(i, j)) < b / 2
H(i, j) = 1;
else
H(i, j) = 0;
end
end
end
H = H .* exp(-1i * k * d * sqrt(1 - ((2 * X) ./ a).^2 - ((2 * Y) ./ b).^2)); % 衍射场
% 计算衍射图样
I = abs(fftshift(fft2(H))).^2;
% 显示衍射图样
figure;
imagesc(x, y, I);
colormap(gray);
axis('equal');
axis('off');
```
运行以上代码后,可以得到一个 Fraunhofer 矩形形孔径衍射的图样。
阅读全文