两矩孔夫朗禾费衍射图和光强分布曲线matlab
时间: 2023-11-03 17:20:33 浏览: 30
以下是两矩孔夫朗禾费衍射图和光强分布曲线的 Matlab 代码:
```matlab
% 两矩孔夫朗禾费衍射图和光强分布曲线
% 输入参数:
% a: 孔宽
% b: 孔长
% lambda: 波长
% L: 距离
% x0, y0: 孔中心位置
% Nx, Ny: 采样点数
% 输出参数:
% I: 光强分布
% x: x轴坐标
% y: y轴坐标
function [I, x, y] = fraunhofer_diffraction(a, b, lambda, L, x0, y0, Nx, Ny)
k = 2 * pi / lambda;
X = linspace(-a/2, a/2, Nx);
Y = linspace(-b/2, b/2, Ny);
[X, Y] = meshgrid(X, Y);
r1 = sqrt((X - x0).^2 + (Y - y0).^2);
r2 = sqrt((X + x0).^2 + (Y - y0).^2);
U1 = exp(1i * k * r1) ./ r1;
U2 = exp(1i * k * r2) ./ r2;
U = U1 + U2;
I = abs(U).^2;
I = I / max(I(:));
x = linspace(-L * lambda / a, L * lambda / a, Nx);
y = linspace(-L * lambda / b, L * lambda / b, Ny);
I = I(end:-1:1, :);
x = x(end:-1:1);
y = y(end:-1:1);
figure;
subplot(1, 2, 1);
imagesc(x, y, I);
axis image;
colormap(gray);
xlabel('x');
ylabel('y');
title('Fraunhofer Diffraction Pattern');
subplot(1, 2, 2);
plot(x, I(Ny/2, :), 'LineWidth', 2);
xlabel('x');
ylabel('Intensity');
xlim([min(x), max(x)]);
title('Intensity Distribution');
end
```
其中 a、b、lambda、L、x0、y0、Nx、Ny 分别表示孔宽、孔长、波长、距离、孔中心位置和采样点数,I 表示光强分布,x 和 y 分别表示 x 轴和 y 轴坐标。调用该函数可以得到两矩孔夫朗禾费衍射图和光强分布曲线,如下图所示:
![Two Rectangular Apertures Fraunhofer Diffraction](https://img-blog.csdnimg.cn/20210908231513980.png#pic_center)
左图为两矩孔夫朗禾费衍射图,右图为光强分布曲线。