Matlab:涡旋光束与平面光波、球面光波干涉

matlab代码:

clc
clear all
close all
%%  涡旋光束与平面光波干涉
N = 300;            %取样点数
lambda = 632e-9;    %波长632nm
k = 2*pi/lambda;    %波数
x = linspace(-1e-2,1e-2,N);
y = linspace(-1e-2,1e-2,N);
[X,Y] = meshgrid(x,y);
[theta,r] = cart2pol(X,Y);

figure;
for m = -4:4
    E1 = exp(-1i*k*X);      %平面波
    E2 = exp(1i*m*theta);   %涡旋光
    c1 = E1+E2;
    E_1 = c1.*conj(c1);
    subplot(3,3,m+5)
    h1 = pcolor(X,Y,E_1);
    colorbar;
    set(h1,'edgecolor','none','facecolor','interp');
    title(['m = ',num2str(m)]);
    colormap(gray);
    axis square;
end
suptitle('涡旋光束与平面光波干涉')   %为图一添加总标题
%% 涡旋光束与球面光波干涉
N = 200;            %取样点数
lambda = 632e-9;    %波长632nm
k = 2*pi/lambda;    %波数
x = linspace(-2e-3,2e-3,N);
y = linspace(-2e-3,2e-3,N);
[X,Y] = meshgrid(x,y);
[theta,r] = cart2pol(X,Y);
Z = 1;
figure;
for m = -4:4
    E3 = exp(-1i*k*Z*(1+0.5*X.^2/Z^2+0.5*Y.^2/Z^2));      %球面波
    E4 = exp(1i*m*theta);   %涡旋光
    c2 = E3+E4;
    E_2 = c2.*conj(c2);
    subplot(3,3,m+5)
    h2 = pcolor(X,Y,E_2);
    colorbar;
    set(h2,'edgecolor','none','facecolor','interp');
    title(['m = ',num2str(m)]);
    colormap(gray);
    axis square;
end
suptitle('涡旋光束与球面光波干涉')   %为图二添加总标题

运行结果:
在这里插入图片描述
在这里插入图片描述
要注意的是,两次干涉x,y取值范围不一样。如果x,y取值太大,在涡旋光与球面光干涉的时候看不到文献中所述的干涉图样。
其中,l为分数的情况可以自己修改数据来实现。
参考文献:
[1]李阳月, 陈子阳, 刘辉, et al. 涡旋光束的产生与干涉[J]. 物理学报, 2010(03):345-353.
[2]薄斌, 门克内木乐, 赵建林,等. 用反射式纯相位液晶空间光调制器产生涡旋光束[J]. 光电子:激光, 2012(01):80-84.

  • 20
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
涡旋平面波干涉可以通过Matlab编写实现。下面是一个简单的代码实现: ```matlab % 设置参数 N = 200; % 图像大小 lambda = 632.8e-9; % 光波长 k = 2*pi/lambda; % 波数 z = 0; % 传播距离 w0 = N/8; % 光束半径 m = 5; % 涡旋的模式数 theta0 = pi/4; % 平面波的入射角度 % 生成网格 x = linspace(-1,1,N); y = linspace(-1,1,N); [X,Y] = meshgrid(x,y); % 生成高斯光束 wz = w0*sqrt(1+(lambda*z/(pi*w0^2))^2); Rz = z*(1+(pi*w0^2)/(lambda*z)^2); w = w0*sqrt(1+(z/(pi*w0^2))^2); psi = atan(z/(pi*w0^2)); u = sqrt(2/pi)*wz/w0*exp(-(X.^2+Y.^2)/w^2).*exp(-1i*k*z).*exp(1i*psi); % 生成涡旋 theta = atan2(Y,X); phi = m*theta; v = exp(1i*phi).*u; % 生成平面波 p = exp(1i*k*(X*cos(theta0)+Y*sin(theta0))); % 干涉 w = u + v + p; % 显示图像 figure; subplot(2,2,1); imagesc(abs(u).^2); axis equal tight; colormap(jet); title('高斯光束'); xlabel('x'); ylabel('y'); subplot(2,2,2); imagesc(abs(v).^2); axis equal tight; colormap(jet); title('涡旋'); xlabel('x'); ylabel('y'); subplot(2,2,3); imagesc(abs(p).^2); axis equal tight; colormap(jet); title('平面波'); xlabel('x'); ylabel('y'); subplot(2,2,4); imagesc(abs(w).^2); axis equal tight; colormap(jet); title('干涉图像'); xlabel('x'); ylabel('y'); ``` 这个代码生成一个大小为200x200的图像,其中包含一个高斯光束、一个模式数为5的涡旋和一个入射角度为45度的平面波。它们在相干条件下干涉,生成干涉图像。你可以调整参数来生成不同的干涉图像。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值