本文解决的问题:基于matlab书写了一个单一光的偏振态绘制图样案例,提供了基于Jones矩阵和Stokes参数矩阵输入处理的函数。
提供的技术价值:在光的矩阵运算过程,可以对光的偏振态进行调用以实时绘制并输出观察。
Fouction Code
% 作者:ZQJ
% 日期:2023.2.6 星期一
%*********************** 产生/绘制单一偏振态函数 **************************
function Polarization_output = f_Generation_or_figure_polorization
Polarization_output.Jones = @Polarization_Jones; % 基于Jones矩阵
Polarization_output.Stokes = @Polarization_Stokes; % 基于Stokes参数矩阵
end
function Polarized_Jones_output = Polarization_Jones(p_theta,p_phi,figure_bool)
% 函数功能:产生一个任意偏振态的Jones矩阵,并可以选择是否绘制
% p_theta: 输入偏振的主轴的方位角
% p_phi: 偏振y分量的相位延迟量
% figure_bool: 是否将偏振figure出来:1是;0不
% Polarization_output: 输出偏振态的Jones矩阵[;]
Polarized_Jones_output = [cos(p_theta); % 此处为这种定义
sin(p_theta)*exp(1i*p_phi)];
if figure_bool == 1
A_x = abs(Polarized_Jones_output(1)); % 分量的振幅
A_y = abs(Polarized_Jones_output(2));
angle_x = angle(Polarized_Jones_output(1)); % 分量的相位
angle_y = angle(Polarized_Jones_output(2));
t = linspace(0,1,1000);
Ex = A_x*cos(20*t+angle_x);
Ey = A_y*cos(20*t+angle_y);
figure,plot(Ex,Ey),axis([-1,1,-1,1]),axis square;
end
end
function Polarized_Stokes_figure = Polarization_Stokes(S0,S1,S2,S3,figure_bool) %#ok<STOUT>
% 函数功能:根据输入的Stokes参数选择是否绘制偏振态图样
% figure_bool: 是否将偏振figure出来:1是;0不
POR_phi = 0.5*atan2(S2,S1); % polarization orientation 偏振方向:椭圆主轴与传统x轴的夹角phi
Ellipticity_theta = 0.5*asin(-S3); % 椭偏度角度theta
Polarization_Jones(POR_phi,Ellipticity_theta,figure_bool);
end
Use_example
% 作者:ZQJ
%*********************** 自定义单一偏振态图样的绘制 **************************
clear,clc,close all;
Polarization_output = f_Generation_or_figure_polorization;
% Jones矩阵形式的偏振态绘制 ***************
p_theta = -1*pi/4;
p_phi = 0*pi/4;
figure_bool = 1;
Polarization_output.Jones(p_theta,p_phi,figure_bool);title('基于Jones矩阵法');
% Stokes矩阵形式的偏振态绘制 **************
S0 = 1;
S1 = 0;
S2 = -1;
S3 = 0;
figure_bool = 1;
Polarization_output.Stokes(S0,S1,S2,S3,figure_bool);title('基于Stokes矩阵法');
仿真结果图:
专栏内容供作者本人或大家学习使用,多多指教 ~