【光学】基于matlab模拟涡旋光与球面波的干涉含Matlab源码

1 简介

基于涡旋光与球面波的干涉原理,提出一种物体微位移的光学测量方法.改进马赫泽德干涉光路,其中一束光照射至空间光调制器产生涡旋光束作为参考光,另一束光经透镜变为球面波后照射至物体上,两束光干涉后干涉条纹呈螺旋状分布.​

2 部分代码

%vortex beamclearclcrow=1080;                                              %像素点设置成1080pixg1=zeros(row);                                         %生成1080阶零矩阵,初始化g1g2=zeros(row);                                         %生成1080阶零矩阵,初始化g1w0=100;                                                %束腰半径l=3;                                                   %拓扑荷值endg=g1+g2;                                              %涡旋光与平面光叠加intensity=abs(g1);                                    %涡旋光光强图phase=angle(g1);                                      %涡旋光相位图figure();imshow(intensity,[]);colormap hot;figure();imshow(phase,[]);colormap jet;intensity1=abs(g);figure();imshow(intensity1,[]);colormap hot;

3 仿真结果

4 参考文献

[1]赵冬娥, 王思育, 马亚云,等. 基于涡旋光与球面波干涉的微位移测量研究[J]. 红外与激光工程, 2020, 49(4):6.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
涡旋与平面波的干涉可以通过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度的平面波。它们在相干条件下干涉,生成干涉图像。你可以调整参数来生成不同的干涉图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值