lyloptics 发表于 2008-10-8 15:21:06

matlab高斯光束压缩程序

下面的程序是我根据           
《Matlab辅助激光光学分析与应用》一书修改的高斯光束通过一个凸透镜和一个凹透镜的传输程序,为什么总是不能达到准直的效果呢?请大家指正!!!

%高斯光束传播变换
clear;
clc;
lambda=1.91e-3;
w0=0.2;
R0=1.0e30;
%Mf1=;
%Mf2=;
Mf1=
Mf2=;
z=linspace(0,500,10000);
Mp2=1;%光束质量因子
q0=1/(1/R0-j*lambda*Mp2/pi/w0^2);
L1=200;%透镜的位置
L2=34;%凸透镜和凹透镜的距离
wz=zeros(size(z));
for gk=1:10000
    if z(gk)<=L1
      M=;
      q=(M(1,1)*q0+M(1,2))/(M(2,1)*q0+M(2,2));
      wz(gk)=sqrt(-1/imag(1/q)/pi*lambda*Mp2);
    elseif z(gk)>L1&&z(gk)<=(L1+L2)
      M=*Mf1*;
      q=(M(1,1)*q0+M(1,2))/(M(2,1)*q0+M(2,2));
      wz(gk)=sqrt(-1/imag(1/q)/pi*lambda*Mp2);
    else z(gk)>=(L1+L2)
      M=*Mf1**Mf2*;
      q=(M(1,1)*q0+M(1,2))/(M(2,1)*q0+M(2,2));
      wz(gk)=sqrt(-1/imag(1/q)/pi*lambda*Mp2);
    end
end
plot(z,wz,'b',z,-wz,'b')

watermoon 发表于 2008-10-8 15:53:04

原帖由 lyloptics 于 2008-10-8 15:21 发表 static/image/common/back.gif
下面的程序是我根据           
《Matlab辅助激光光学分析与应用》一书修改的高斯光束通过一个凸透镜和一个凹透镜的传输程序,为什么总是不能达到准直的效果呢?请大家指正!!!

%高斯光束传播变换
clear;
clc;
lam ...
呵呵,我来指正一下。。。。。。
第一,高斯光束和几何光学之间存在一个过渡,高斯光束的束腰越小,和几何光学的差距越大,你设定的束腰为0.2mm,很小,因此当它透过一个焦距为48mm的透镜后,像方束腰位置并不是在透镜的几何焦点处,根据你的设置,大概是在60mm处左右。所以你根据几何光学设计的倒置扩束(压缩)系统并没有达到预期目的。如果你将物方束腰设定为2mm的话,你就会看到你的预期结果了。
第二,if-elseif-else-end 结构中,else 后面是不跟条件的,你画蛇添足了。
第三,else后面的传输矩阵顺序错了!

请仔细修改!

yuxr 发表于 2008-10-8 16:25:16

大胡子果然是个狠角,厉害厉害!!!

lyloptics 发表于 2008-10-8 17:11:27

谢谢大胡子兄,我的确是需要对2mm半径的光束进行压缩。透镜的焦距来源于zemax模拟。
另外,矩阵的顺序为什么必须是从后往前相乘?

shizh 发表于 2008-10-8 21:06:33

你的第一个ELSE 写的矩阵顺序是对的,第二个else的矩阵顺序是反的,楼主你为什么这两个地方的规则都不一样呢?

矩阵光学的基本原理就是这样子,经过传输矩阵变换的时候,矩阵相乘的顺序是倒着来写的。

lyloptics 发表于 2008-10-8 22:07:14

原来这样啊,一直没有很仔细的看传输矩阵相乘的顺序,这次写程序才发现的!

nkhanbin 发表于 2008-10-9 13:17:38

因为矩阵光学的初时条件要放在最后,所以矩阵相乘的顺序就要反过来看了,呵呵

zhjy0729 发表于 2008-10-9 18:57:05

对,学激光光学的时候书上是这么说的,矩阵要反过来算

yangshiwei 发表于 2009-11-5 10:34:28

看看,学习中啊,多谢楼主啊

calvino 发表于 2009-11-5 10:56:21

我做实验时也发现了 束腰确实不会在几何焦点上

liu.wade 发表于 2013-2-19 13:57:44

已看...

huangjingyi 发表于 2013-6-22 17:50:37

长见识了
页: [1] 2
查看完整版本: matlab高斯光束压缩程序