高斯光束绘制与传输(角谱法)MATLAB

基模高斯光束:

高斯光束的横向光强分布:

传递函数:

运行结果:

MATLAB:

%角谱法计算光束传输
clc;
clear;
close all;

% 参数定义
lambda = 632.8e-9;    % 波长(米)
k = 2 * pi / lambda;  % 波数
w0 = 0.1e-3;          % 初始束腰半径(米)
z_final = 0.1;        % 最终传输距离(米)

% 空间坐标设置
L = 10 * w0;          % 横向空间大小(米)
N = 2^9;              % 网格点数
dx = L / N;           % 采样间距
x = -L/2 : dx : L/2 - dx;
y = x;
[X, Y] = meshgrid(x, y);

% 空间频率坐标设置
df = 1 / L;
fx = -1/(2*dx) : df : 1/(2*dx) - df;
fy = fx;
[Fx, Fy] = meshgrid(fx, fy);
Fxy = Fx.^2 + Fy.^2;
    
% 初始高斯光束
Uin = exp(-(X.^2 + Y.^2) / w0^2); %横向光强
U0=Uin;

% 计算传输后的高斯光束
z = linspace(0, z_final, 10);  % 传输距离从0到z_final
for zz = z
    % 傅里叶变换计算
    Uin_ft = fftshift(fft2(ifftshift(Uin)));
  
    % 傅里叶域中的传播因子
    H = exp(-1i * pi * lambda * zz * Fxy);
    
    % 传播后的光场
    Uout_ft = Uin_ft .* H;
    Uout = fftshift(ifft2(ifftshift(Uout_ft)));
    
    % 绘图
    figure(1);
    m=2;
    n=2;
    subplot(m, n, 1);
    I0 = abs(U0).^2;
    I0 = I0 / max(max(I0));
    surf(x,y,I0);             %三维图
    shading interp;          %图像更平滑
    colormap(jet);           %彩色映射,hot
    title('初始高斯光束');
%     axis square;

    subplot(m, n, 2);    
    imagesc(x, y, I0);
    title('初始高斯光束');
    xlabel('X (m)');
    ylabel('Y (m)');
    axis square;
    colormap('jet');
    colorbar;

    subplot(m, n, 3);
    I_out = abs(Uout).^2;
    I_out = I_out / max(max(I_out));
    surf(x,y,I_out)             %三维图
    shading interp          %图像更平滑
    colormap(jet)           %彩色映射,hot
    title(['传播距离 z = ' num2str(zz) ' m']);
    
    subplot(m, n, 4);
    imagesc(x, y, I_out);
    title(['传播距离 z = ' num2str(zz) ' m']);
    xlabel('X (m)');
    ylabel('Y (m)');
    axis square;
    colormap('jet');
    colorbar;
    drawnow;
end
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值