% 参数设置
lambda = 840e-9; % 光波长 (单位:米)
k = 2 * pi / lambda; % 波数
n = 1.451; % 介质的折射率
cone_angle = 10 * pi / 180; % 锥的底角 (单位:弧度)
z_max = 10e-3; % 模拟传播的最大距离 (单位:米)
N = 512; % 图像的分辨率
dx = 3.45e-6; % 每个像素的尺寸 (单位:米)
dy = dx; % 假设为正方形像素
% 空间坐标系
x = (-N/2:N/2 - 1) * dx;
y = (-N/2:N/2 - 1) * dy;
[X, Y] = meshgrid(x, y);
Rxy = sqrt(X.^2 + Y.^2); % 径向坐标
% 锥透镜的相位调制
phi_cone = k * Rxy * cone_angle * (n-1); % 锥透镜的相位因子
% 初始平面波场
U0 = exp(1i * zeros(size(X))); % 平面波,初始相位为0
% 通过锥透镜调制光波
U_coned = U0 .* exp(-1i * phi_cone); % 平面波经过锥透镜调制
% 计算频率空间 (角谱传播)
fx = (-N/2:N/2-1) / (N * dx); % 频率坐标
fy = fx;
[Fx, Fy] = meshgrid(fx, fy);
F = sqrt(Fx.^2 + Fy.^2); % 频率空间的径向坐标
% 传播传递函数,考虑传播距离 z_max
H = @(z) exp(1i * k * z * sqrt(1 - (lambda * F).^2)); % 角谱传播传递函数,动态传递
% 设置传播距离的采样点(例如,模拟从 0 到 z_max 的多个传播距离)
z_samples = linspace(0, z_max, 50); % 50 个传播距离
intensity_xz = zeros(N, length(z_samples)); % 预分配空间
% 对每个传播距离进行计算并可视化
for i = 1:length(z_samples)
z = z_samples(i);
% 计算传播到 z 处的场
U_freq = fftshift(fft2(U_coned)); % 2D 傅里叶变换
U_freq = U_freq .* H(z); % 应用传播传递函数
U_propagated = ifft2(ifftshift(U_freq)); % 逆傅里叶变换回到空间域
% 提取 y = 0 处的 xz 平面数据
y_idx = ceil(N / 2); % 选择 y = 0 处,即 Ny 中心
U_xz = U_propagated(:, y_idx); % 提取 xz 平面的数据
% 计算强度分布 |U(x, 0, z)|^2并保存
intensity_xz(:, i) = abs(U_xz).^2; % 直接存入预分配的矩阵
end
% 绘制强度分布(xz平面的切片)
figure(1); % 5 行 10 列的子图
% 对intensity_xz进行水平翻转,这里使用 fliplr 函数,它可以对矩阵进行左右翻转(水平翻转)
intensity_xz_flipped = fliplr(intensity_xz);
imagesc(x, [0 z_max], intensity_xz_flipped); % 显示在 xz 平面上的强度分布
colormap('parula');
axis on; % 打开坐标轴
xlabel('x (m)'); % 添加 x 轴标签
ylabel('z (m)'); % 添加 y 轴标签
% 获取当前图像的坐标轴范围
xlim_val = xlim; % x 轴范围
ylim_val = ylim; % y 轴范围
% 在图像上添加文字注释
text(mean(xlim_val), mean(ylim_val)*0.2, '10°', ...
'HorizontalAlignment', 'center', 'FontSize', 10, 'Color', 'yellow'); % 在图像上添加文字
% 调整坐标轴位置,去除不必要的空白
%set(gca, 'Position', [0 0 1 1]); % 设置坐标轴位置为图形窗口的整个区域
% 手动设置图形窗口为正方形
set(gcf, 'Position', [100, 100, 800, 200]); % 确保窗口宽度和高度相同
%phi = angle(U_coned);
%绘制相位分布灰度图
phi = angle(U_coned); % 提取相位
figure;
imagesc(x, y, phi); % 使用 imagesc 函数展示相位分布
axis equal; % 保证坐标轴比例相等
colormap gray; % 使用灰度色图
colorbar; % 显示颜色条
title('Phase Distribution of the Lens');
xlabel('X');
ylabel('Y'); 如何使图一x轴坐标从0开始,z轴坐标中间为0,图二坐标不变 |
|