ZEMAX | 使用API模拟旋转对称不规则性(RSI)
好酷屋教程网小编为您收集和整理了ZEMAX | 使用API模拟旋转对称不规则性(RSI)的相关教程:继上次的内容《ZEMAX|旋转对称不规则性(RSI)简介》,在这篇文章中,我们将展示Zemax应用程序编程接口(ZOS-API)与Matlab的强大功能如何用于模拟关键制造缺陷,例如抛物面
继上次的内容
《ZEMAX | 旋转对称不规则性(RSI)简介》
,在这篇文章中,我们将展示 Zemax 应用程序编程接口(ZOS-API)与 Matlab 的强大功能如何用于模拟关键制造缺陷,例如抛物面镜上的旋转对称不规则性(RSI)。旋转对称不规则性(RSI)
是指光学表面形状中的一组旋转对称误差。误差由 Zernike 多项式表示,具有三阶球差和高阶球差的形式。抛物面镜示例
我们将演示如何向抛物面镜添加 RSI 和总不规则性。示例为F/3,有效焦距为150 mm的反射镜。
为了演示,我们将根据以下规范在表面上添加总不规则性和 RSI :
关于此规范的更多信息请查看,旋转对称不规则性(RSI)简介。
这将在表面上放置1个完全不规则的P-V波,以及0.3个P-V波的PSI。以纳米为单位,这将是500 nm的总表面不规则性和150 nm的RSI。
代码结构
我们创建了示例 Matlab 代码来对 RSI 进行建模。此代码包括与建模不规则性和RSI 相关的函数。函数 prepare surface 将标准或均匀非球面表面更改为 Zernike 标准凹陷表面。还包括几个基本的支持功能,例如用于显示来自.ZMX文件的镜头数据编辑器 (LDE) 信息的显示LDE。
最重要的函数是 AddBC(表面数,波长,B,C),其中B是最大总表面不规则度,C是最大允许 RSI。AddBC 函数的工作原理如下:
为RSI项分配随机值:Z11、Z22、Z37和Z56。
检查RMS表面误差。
缩放以达到C的正确值。
这仅需要一次缩放,因为将每个Zernike系数缩放一个常数会使RMS缩放相同的常数。
将随机值分配给模型B的其他Zernike多项式,完全不规则。
在不干扰RSI项的值的情况下使用:Z11、Z22、Z37和Z56。
使用Z5 – Z37模拟总不规则性。
迭代缩放Zernike项以达到正确的总不规则性。
在交互模式下运行Matlab示例代码
与Matlab的API交互模式很方便,因为您可以使用 Matlab 命令行控制 API。这使您可以即时尝试新命令和更改命令。
您可以从编程选项卡中选择 Matlab,然后选择交互式扩展,以交互模式进行连接,如下所示:
连接代码将自动打开:
回到 OpticStudio,单击变成选项卡上的“交互式扩展”将使 OpticStudio 进入“侦听”模式。
在 Matlab 中,现在可以使用以下命令进行连接:
>> TheApplication = MATLABZOSConnection9(7)
请注意,您的 MATLABZOSConnection 编号和实例可能与此处给出的不同。例如,如果这是您第一次连接,您可能有 MATLABZOSConnection(1)。
使用Matlab模拟RSI
建立连接后,我们可以从 Matlab 命令行加载 .ZMX 文件并从文件中收集信息,如下所示:
>> primary system = TheApplication.PrimarySystem
>> theLDE = primarySystem.LDE
>> theMFE = primarySystem.MFE
>> systemData = primarySystem.SystemData
>> savefilename = System.String.Concat
(pwd,’\LensFileForTesting.zmx’)
>> primarySystem.SaveAs(savefilename)
所有必需的函数都包含在文件 ErinsABCFunctions.m 中。通过在 Matlab 中打开它,我们可以加载各个函数。
>> abc = ErinsABCFunctions
我们通过将其更改为 Zernike 标准凹陷表面来预设表面。
>> ldetable = abc.displayLDE(primarySystem); disp(ldetable);
>> surfacetable = abc.prepareSurface(primarySystem,3);
disp(surfacetable);
上述两个命令的输出如下所示:
稍后,我们将设定镜面的起始缺陷。
>> startingsag = abc.getSag(primarySystem,3);
>> figure(); imagesc(startingsag); axis square;
现在我们可以使用 AddBC 添加 B和C 的表面不规则性。
>> bctable = abc.AddBC( primarySystem, 3, 500.0, 1, 0.3);
>> disp( bctable);
请注意,此时,如果我们正在运行公差,我们可以在调用 AddBC 时为 B和C 选择随机值。收集镜子的扰动缺陷,并减去起始缺陷,使表面误差扰动可见。
>> bcsag = abc.getSag( primarySystem, 3);
>> sagdiff = bcsag-startingsag;
>> figure(); imagesc( sagdiff ); axis square;
我们也可以检查这些表面误差的最终P-V。
>> abs(max( sagdiff(:))-min( sagdiff(:))
/ (500*10^-6))
该值为0.995,而不是我们要求的B = 1.000。这是与缩放 Zernikes 的迭代期间使用的精度设置有关。更严格的精度设置将返回更接近1.000的结果,但计算时间会更长。
完成模拟后,我们关闭交互模式。
>> TheApplication.CloseApplication()
以上就是好酷屋教程网小编为您收集和整理的ZEMAX | 使用API模拟旋转对称不规则性(RSI)相关内容,如果对您有帮助,请帮忙分享这篇文章^_^
本文来源: https://www.haoku5.com/IT/63a501e6bc08510b530702db.html
相关推荐
热门专题
PS快捷键_PS快捷键大全
经典的Photoshop快捷键大全,如果你是入门阶段的水平,熟读此文并掌握,马上进阶为中级水平。matlab怎么换行?matlab换行教程
今天小编为大家带来的是matlab换行的教程,想知道怎么换行的小伙伴来看看接下来的这篇文章吧,相信一定会帮到你们的。matlab怎么换行?matlab换行教程1、首先在matlab主页面板中点击【Matlab求矩阵的乘积的操作方法
很多用户在使用Matlab的时候,不是很熟悉其中怎么求矩阵的乘积的?本期为你们带来的教程就描述了Matlab求矩阵的乘积的操作方法。Matlab求矩阵的乘积的操作方法打Matlab,在命令行窗口分区工具diskgenius强制删除文件的具体使用流程
很多人不知道分区工具diskgenius如何强制删除文件?今日为你们带来的文章是关于分区工具diskgenius强制删除文件的具体含义讲解,还有不清楚小伙伴和小编一起去学习一下吧。分区工具diskggoldwave怎么启用延迟录制计时器?goldwave启用延迟录制计时器教程
很多小伙伴在使用goldwave的时候,想知道怎么启用延迟录制计时器,下面小编就为大家分享教程,感兴趣的小伙伴不要错过哦!goldwave怎么启用延迟录制计时器?goldwave启用延迟录制计时器教pycharm使用技巧
今天小编给大家讲解pycharm使用技巧,有需要或者有兴趣的朋友们可以看一看下文,相信对大家会有所帮助的。pycharm使用技巧使用PyCharm软件需要python运行环境,这里我已经下载好。CAD看图软件哪个好用?如何使用CAD看图软件
在CAD中,大家都知道CAD图纸是使用CAD制图软件来绘制完成的,那保存的格式就是为dwg格式和dxf格式的。那需要对图纸内容进行查看的时候,就要适用到CAD看图软件。但看图软件有很多,那么CAD看图diskgenius怎么将分区中的文件复制到指定目录?diskgenius将分区中的文件复制到指定目录方法
使用diskgenius的时候,很多小伙伴不知道怎么将分区中的文件复制到指定目录,下面小编就给大家带来方法,有需要的小伙伴不要错过哦。diskgenius怎么将分区中的文件复制到指定目录?diskg分区工具diskgenius将硬盘合并分区的详细流程
说起分区工具diskgenius伙伴们都不陌生,那么使用怎么使用分区工具将硬盘合并分区呢?下面一起看看关于分区工具diskgenius将硬盘合并分区的详细流程吧。分区工具diskgenius将硬盘合MathType中公式与文字错位的处理方法
最近有很多朋友向我咨询关于MathType中公式与文字错位的问题,今天就为大家介绍MathType中公式与文字错位的处理方法,希望能够帮助到大家。MathType中公式与文字错位的处理方法方法一