Matlab菲涅尔基尔霍夫衍射公式

 1. 代码

clear all;
close all;
lambda = 632.8e-9; % 光波的波长
k = 2 * pi / lambda; % 波数
L = 10e-3; % 采样区域大小单位m
N = 1024;% 采样点数
a = 1e-3; % 光阑半径单位m
z = 1; % 衍射距离

% 定义计算[函数]
fresnel_diffraction = @(x, y) (1 / (1i * lambda * z)) * exp(1i * (2 * pi / lambda * z + pi / lambda * (x^2 + y^2) / z)) * exp(1i * pi / lambda * (x^2 + y^2) / z);

% 定义计算区域
% 生成采样点
x = linspace(-L/2, L/2, N);
y = linspace(-L/2, L/2, N);
[X, Y] = meshgrid(x, y);

% 计算衍射场
diffraction_field = fresnel_diffraction(X, Y);

% 绘制衍射图像
m = 4;
for i = 1:m
    figure(i);
    I = abs(diffraction_field).^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('jet');
    xlabel('x (m)');
    ylabel('y (m)');
    title([num2str(i),'阶besselj光束'],'菲涅尔基尔霍夫衍射');
end

2. 结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值