绘图结果
原理
%% 夫琅禾费衍射例子——经过圆孔
clc; % 清除命令行窗口
clear all; % 清除工作区中的所有变量
close all; % 关闭所有打开的图形窗口
% 参数设置
L = 0.2; % 计算区域的物理尺寸 (m)
N = 200; % 网格点的数量
dx = L / N; % 网格的空间分辨率
x = linspace(-L/2, L/2, N); % x方向的坐标
y = x; % y方向的坐标,与x相同
[X, Y] = meshgrid(x, y); % 创建二维网格坐标,用于计算
% 圆孔参数和波长设置
w = 1e-3; % 圆孔的半径 (m)
lambda = 632.8e-9; % 光波的波长 (m),红光
z = 50; % 圆孔到屏幕的距离 (m)
k = 2 * pi / lambda; % 波数,k = 2π/λ
lz = lambda * z; % λz,用于后续计算
% 圆孔处的波场计算
XY = X.^2 + Y.^2; % 计算 x^2 + y^2,用于定义网格上每一点到圆心的距离的平方
U1 = w^2 .* (jinc(w/lz * sqrt(XY))); % 圆孔衍射后的初始场分布,利用jinc函数
% 夫琅禾费衍射公式的实现
H = exp(1i * k * z) / (1i * lambda * z) .* exp(1i * k * (XY) / (2 * z)); % 衍射传递函数
U2 = U1 .* H; % 圆孔后场的远场表示
% 计算光强分布
I2 = (U1 ./ lz).^2; % 计算光场的强度分布
% 绘制结果
figure('color','w') % 创建一个白色背景的图形窗口
subplot(1,2,1);
imagesc(x, y, nthroot(I2, 3)); % 绘制光强分布图,使用三次方根拉伸颜色显示以增强对比度
colormap('gray') % 使用灰度色表
xlabel('x(m)'); % 设置x轴标签
ylabel('y(m)'); % 设置y轴标签
axis square; % 使用方形轴
axis xy; % 保持x-y坐标系的方向
title('通过小孔的夫琅禾费衍射');
subplot(1,2,2);
plot(x,I2(N/2,:)); % x 轴上的某一行的光强分布
% plot(y,I2(:,N/2)); % y 轴上的某一列的光强分布
xlabel('x(m)'); % 设置x轴标签
ylabel('光强度(W/m^2)'); % 设置y轴标签
title('x轴轮廓');
axis square; % 使用方形轴
% 定义jinc函数
function [out] = jinc(x)
% 计算 jinc 函数的值,jinc(x) = J1(2πx)/x
mask = (x ~= 0); % 找到 x 中所有不等于 0 的元素的位置
out = pi * ones(size(x)); % 初始化输出为 π
out(mask) = besselj(1, 2 * pi * x(mask)) ./ x(mask); % 对 x 不为 0 的位置计算 jinc 函数值
end
标签:禾费,圆孔,夫琅,jinc,衍射,Matlab,计算,lambda
From: https://blog.csdn.net/weixin_46682376/article/details/142216283