资源简介
使用matlab实现对高阶邦加球的实验验证,调试通过,代码详细
代码片段和文件信息
%产生高阶邦加球光场
clc;
close all;
clear all;
X=linspace(-11256);
XX=repmat(X2561);
Y=linspace(1-1256);
YY=repmat(Y‘1256);
pha=atan(YY./XX);
i=sqrt(-1);
P=sqrt(XX.^2+YY.^2);
for m=1:256
for n=1:256
if P(mn)<=1;
Mx(mn)=1;%左旋琼斯矢量
My(mn)=-i;
Nx(mn)=1;%右旋琼斯矢量
Ny(mn)=i;
Lx(mn)=1/sqrt(2)*exp(-i*pha(mn)).*Mx(mn);%高阶球的基矢量 左旋表达式
Ly(mn)=1/sqrt(2)*exp(-i*pha(mn)).*My(mn);
Rx(mn)=1/sqrt(2)*exp(i*pha(mn)).*Nx(mn);%右旋表达式
Ry(mn)=1/sqrt(2)*exp(i*pha(mn)).*Ny(mn);
else
Mx(mn)=0;
My(mn)=0;
Nx(mn)=0;
Ny(mn)=0;
Lx(mn)=0;
Ly(mn)=0;
Rx(mn)=0;
Ry(mn)=0;
end
end
end
for m=1:256
for n=1:256
if P(mn)>2/3&&P(mn)<=1;
Ax(mn)=0.707*Rx(mn)+0.707*Lx(mn);
Ay(mn)=0.707*Ry(mn)+0.707*Ly(mn);
elseif P(mn)>1;
Ax(mn)=0;
Ay(mn)=0;
elseif P(mn)>1/3&&P(mn)<=2/3;
Ax(mn)=1.307*Rx(mn)+0.541*exp(i*pi/2).*Lx(mn);
Ay(mn)=1.307*Ry(mn)+0.541*exp(i*pi/2).*Ly(mn);
elseif P(mn)<=1/3;
Ax(mn)=2*Rx(mn);
A
- 上一篇:卡方检验代码
- 下一篇:均匀球体剖面重力异常正演模拟Matlab代码
评论
共有 条评论