高斯光束的简单matlab仿真「建议收藏」

高斯光束的简单matlab仿真「建议收藏」clcclearallcloseall%%假设在z=0处有一振幅为A的高斯光束N=100;lambda=1064e-6;%波长为1064nmk=2*pi/lambda;%波矢A=1;%振幅w=3;%高斯光束的束宽[x1,y1]=meshgrid(linspace(-10,10,N…

大家好,又见面了,我是你们的朋友全栈君。

clc
clear all
close all
%%  
N = 100;
lambda = 1064e-6;   %波长为1064nm
k = 2*pi/lambda;    %波矢
w = 3;              %高斯光束的束宽
[x1,y1] = meshgrid(linspace(-10,10,N));
E1 = exp(-(x1.^2+y1.^2)/w^2);   
I1 = E1.*conj(E1);
I1 = I1/max(max(I1));
figure;mesh(x1,y1,I1)
set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性
xlabel('x/mm','fontname','times new roman','fontsize',16);
ylabel('y/mm','fontname','times new roman','fontsize',16);
zlabel('归一化强度','fontname','华文中宋','fontsize',16);
%% 传输程序
f = 500;
A = 0;  B = f;  D = 0;
x = linspace(-0.1,0.1,N); y = linspace(-0.1,0.1,N);
[x2,y2] = meshgrid(x,y);
for a = 1:N
    for b = 1:N
        E2(a,b) = sum(sum(E1.*exp(i*k/2/B*(A*(x1.^2+y1.^2)+D*(x(a).^2+y(b).^2)-2*(x1.*x(a)+y1.*y(b))))));
    end
    a
end
I2 = E2.*conj(E2);
I2 = I2/max(max(I2));
figure;mesh(x2,y2,I2)
set(gca,'fontname','times new roman','fontsize',16);    %设置图形对象属性
xlabel('x/mm','fontname','times new roman','fontsize',16);
ylabel('y/mm','fontname','times new roman','fontsize',16);
zlabel('归一化强度','fontname','华文中宋','fontsize',16);

结果如下图:
图一
图2
第一部分假设在z=0平面有一高斯光束,然后绘制其光场图像;第二部分是其通过一个焦距为500mm的透镜聚焦后的光场,用到的公式是柯林斯(Collins)广义衍射积分。

参考书:
[1]吕百达. 激光光学:光束描述、传输变换与光腔技术物理[M]. 高等教育出版社, 2003.

环形光束的MATLAB仿真

clc
clear all
close all
%%
N = 100;
lambda = 1064e-6;       %波长为1064nm
k = 2*pi/lambda;        %波矢
w = 3;                  %束宽
[x1,y1] = meshgrid(linspace(-10,10,N));
E1 = exp(-(sqrt(x1.^2+y1.^2)-5).^12/w^12);
I1 = E1.*conj(E1);
I1 = I1/(max(max(I1)));
figure;mesh(x1,y1,I1)
set(gca,'fontname','times new roman','fontsize',16);
xlabel('x/mm','fontname','times new roman','fontsize',16);
ylabel('y/mm','fontname','times new roman','fontsize',16);
zlabel('归一化强度','fontname','华文中宋','fontsize',16);
%%
f = 500;                %透镜焦距为500mm
A = 0;  B = f;  D = 0;
x = linspace(-0.1,0.1,N);   y = linspace(-0.1,0.1,N);
[x2,y2] = meshgrid(x,y);
for a=1:N
    for b=1:N
        E2(a,b) = sum(sum(E1.*exp(i*k/2/B*(A*(x1.^2+y1.^2)+D*(x(a).^2+y(b).^2)-2*(x1.*x(a)+y1.*y(b))))));
    end
end
I2 = E2.*conj(E2);
I2 = I2/max(max(I2));
figure;mesh(x2,y2,I2)
set(gca,'fontname','times new roman','fontsize',16);
xlabel('x/mm','fontname','times new roman','fontsize',16);
ylabel('y/mm','fontname','times new roman','fontsize',16);
zlabel('归一化强度','fontname','华文中宋','fontsize',16);

结果如下:
II1
I2
这个和上面的高斯光束一样,只不过是光源部分的公式发生了改变。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139465.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python程序中的进程操作

    之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程。所有的进程都是通过它的父进程来创建的。因此,运行起来的python程序也是一个进程

    2022年3月29日
    61
  • svn更换服务器地址_如何登录svn服务器

    svn更换服务器地址_如何登录svn服务器描述本文适用于服务器镜像复制的情况,即svn在原本的服务器上,在服务器控制台上,将原本服务器的镜像导入新的服务器中,因此可能并不适用于所有的情况;操作步骤1.将快到期的服务器镜像进行导出,在新的服务器上进入镜像导入,等待完成即可;2.由于是镜像复制,因此原本的svn配置一致,只需要修改分支绑定的服务器域名即可,如下所示:查看迁移后的svn项目绑定的服务器信息将当前项目目录中的.svn目录进行删除(保险起见,可以先进行备份)#进入项目cd/dir…/larave

    2022年10月2日
    2
  • 禁用LLDP

    禁用LLDP场景:在未回放pcap包的情况下,dpdk探针抓包时,会收到LLDP包(0x88cc,链路层发现协议(LinkLayerDiscoveryProtocol,LLDP)是一种数据链路层协议。)此时,我们可以修改发包服务器的配置,禁用LLDP。方法:以下方法摘抄至[此博客](http://blog.itpub.net/31520497/viewspace-2747053/)因此服务器中所有扩展网卡(X710)、板载网卡和ilo均需要关闭lldp功能,因此需要在服务器测试查找板载lldp关闭的接口

    2022年5月28日
    69
  • 双线性插值算法详解并用matlab实现「建议收藏」

    双线性插值算法详解并用matlab实现「建议收藏」参考:https://blog.csdn.net/huang1024rui/article/details/46545329数字图像处理双线性插值算法介绍双线性插值法又称为二次线性插值法。在传统的插值算法中,它的插值效果比nearest插值法要好的多,但是速度上也必然会慢很多,比bicubic(二次立方法)效果要差,但速度上要优于bicubic。它主要思想就是利用某像…

    2022年6月11日
    32
  • 架构入门!常见的服务器架构,从单体架构、EAI 到 SOA 再到微服务和 ServiceMesh

    架构入门!常见的服务器架构,从单体架构、EAI 到 SOA 再到微服务和 ServiceMesh

    2021年10月5日
    91
  • webpack react 单独打包 CSS

    webpack react 单独打包 CSS

    2021年9月14日
    123

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号