%% 多掩膜传播演示(掩膜以矩阵形式输入)clc;clear; close all;% 系统参数N = 512; % 网格点数L = 4; % 窗口边长 (mm)lambda = 632.8e-6; % 波长 (mm)% 创建坐标网格(用于构造掩膜矩阵)x = linspace(-L/2, L/2, N);dx = x(2)-x(1); dy = dx;[X, Y] = meshgrid(x, x);[theta,r] = cart2pol(X,Y);mask1 = exp(-1i*2*pi/lambda*(X.^2+Y.^2)/2/40);mask2 = exp(-1i*2*pi/lambda*sqrt(X.^2+Y.^2)*0.01);mask3 = triangle_hole(0.2,0,N,L);% 构造两个圆形掩膜矩阵(透过率为 1 或 0)%mask1 = double(sqrt(X.^2 + Y.^2) <= 0.2); % 半径 0.2 mm%mask2 = double(sqrt(X.^2 + Y.^2) <= 0.4); % 半径 0.4 mm% 掩膜元胞数组masks = {mask1, mask1,mask3};z_masks = [0, 50,70]; % 掩膜位置 (mm)z_det = 100; % 探测器位置 (mm)% 初始高斯光束(束腰 0.3 mm,平面波前)w0 = 0.3;U0 = LG_beam(r,theta,0,w0,lambda,dx,dy,0,2);% ----- 1. XY 探测面 -----multi_mask_propagation(N, L, lambda, masks, z_masks, 'XY', z_det, ... 'method', 'AS', 'U0', U0);title('XY Detector at z = 30 mm');% ----- 2. XZ 切片(y=0,z 轴水平)-----multi_mask_propagation(N, L, lambda, masks, z_masks, 'XZ', z_det, ... 'method', 'AS', 'U0', U0, 'slice_pos', 0, 'z_step', 0.2);title('XZ Slice at y = 0 mm');% ----- 3. YZ 切片(x=0,z 轴水平)-----multi_mask_propagation(N, L, lambda, masks, z_masks, 'YZ', z_det, ... 'method', 'AS', 'U0', U0, 'slice_pos', 0, 'z_step', 0.2);title('YZ Slice at x = 0 mm');% ----- 4. 一维横向探测器(z=30 mm,y=0 处沿 x 的强度)-----multi_mask_propagation(N, L, lambda, masks, z_masks, '1D', z_det, ... 'method', 'AS', 'U0', U0, 'slice_pos', 0);title('1D Profile at z = 30 mm, y = 0');% ----- 5. 轴向一维探测器(轴上点 x=0,y=0)-----multi_mask_propagation(N, L, lambda, masks, z_masks, 'axial_XZ', z_det, ... 'method', 'AS', 'U0', U0, 'slice_pos', 0, 'z_step', 0.1);title('Axial intensity (x=0, y=0)');% ----- 6. 轴向一维探测器(离轴点 x=0,y=0.2 mm)-----multi_mask_propagation(N, L, lambda, masks, z_masks, 'axial_YZ', z_det, ... 'method', 'AS', 'U0', U0, 'slice_pos', 0.2, 'z_step', 0.1);title('Axial intensity (x=0, y=0.2 mm)');