资源简介

使用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

评论

共有 条评论

相关资源