本文基于光学原理,用Matlab实现轴对称矢量光束聚焦仿真。
Project Code
% 作者:ZQJ
% 日期:2022.3.24 星期四
clear,clc,close all;
func_translight = f_Lightfield_transmission;
% 基本参数输入*****************************
L = 1; % 拓扑荷阶数
lamda = 1550e-9;
w0 = 1e-3; % 束腰半径
z0 = 0.2; % 光束传输距离
light_length = 5e-3; % 光场边长
N = 1024; % 矩阵像素
ER = [1,1i];
EL = [1,-1i];
[x0,y0] = meshgrid(linspace(-light_length/2,light_length/2,N));
theta = atan2(y0,x0);
gaussian_I = f_Gaussian_beams(w0,z0,lamda,light_length,light_length,N,N);
E0_R = gaussian_I.*exp(1i*L.*theta);
E1_R = func_translight.FFT_(lamda,E0_R,light_length,light_length,0.4);
E0_L = gaussian_I.*exp(-1i*L.*theta);
E1_L = func_translight.FFT_(lamda,E0_L,light_length,light_length,0.4);
figure,subplot(2,2,1),imagesc(abs(E1_R).^2),colormap(subplot(2,2,1),hot);axis off;axis square;
subplot(2,2,2),imagesc(angle(E1_R)),colormap(subplot(2,2,2),gray);axis off;axis square;
subplot(2,2,3),imagesc(abs(E1_L).^2),colormap(subplot(2,2,3),hot);axis off;axis square;
subplot(2,2,4),imagesc(angle(E1_L)),colormap(subplot(2,2,4),gray);axis off;axis square;
f = 0.03;
Lens_phase = exp(-1i*pi/lamda/f*(x0.^2+y0.^2));
figure,imagesc(angle(Lens_phase)),colormap gray;axis off;axis square;
ER_x = E1_R .* ER(1) .* Lens_phase;
ER_x = func_translight.FFT_(lamda,ER_x,light_length,light_length,f);
ER_y = E1_R .* ER(2) .* Lens_phase;
ER_y = func_translight.FFT_(lamda,ER_y,light_length,light_length,f);
EL_x = E1_L .* EL(1) .* Lens_phase;
EL_x = func_translight.FFT_(lamda,EL_x,light_length,light_length,f);
EL_y = E1_L .* EL(2) .* Lens_phase;
EL_y = func_translight.FFT_(lamda,EL_y,light_length,light_length,f);
figure,subplot(1,3,1),imagesc(abs(ER_x+EL_x).^2);axis off;axis square;
subplot(1,3,2),imagesc(abs(ER_y+EL_y).^2);axis off;axis square;
subplot(1,3,3),imagesc(abs(ER_x+EL_x).^2 + abs(ER_y+EL_y).^2);axis off;axis square;colormap hot;
专栏内容供作者本人或大家学习使用,多多指教 ~