如何在ZEMAX和MATLAB之间通信

原作:Derek Griffith

本文内容:

1如何在MATLAB和ZEMAX中设置通信链接

2如何为MATLAB设置ZEMAX DDE 工具箱

3常见问题及解答

Zemax and Matlab : 强大的配对

Zemax具有内置的DDE(动态数据交换)服务器,因而允许其他的windows程序和zemax函数之间建立链接。如果你用譬如C++之类的编程语言来编写一个zemax DDE应用,那将是一件非常复杂的事情。另一种选择是选择一种脚本语言,比如说tcl,python和matlab。Matlab是不错的选择,因为它有大量的处理和可视化科学与工程数据的函数。Matlab也有工具箱在一些更加专业和学科性的领域来扩展它的能力。

那么,什么是DDE?

DDE是windows的一种协议来允许不同应用之间的通信。

DDE通信有一些模式,最简单的就是数据串之间的交换。两个应用中的一个必须把自己设置为服务器。Zemax此时就是服务器,所以你要做的事情就是打开zemax。你一旦启动了zemax,dde服务器就已经就绪并等待客户机来连接和请求服务。此时的客户机就是matlab。

从matlab连接到zemax

如果你查阅zemax手册中的“Zemax Extensions”章中的The Data Items部分,你会看到许多不同的你可以用matlab(或者其他的客户机)发送到zemax的请求命令。手册里还记录了zemax会返回给客户机的回复信息。这些请求可能是为了让zemax运行一个特别的函数或者计算,挥着仅仅是为了发送当前存储在zemax DDE服务器上的透镜数据。

有一点需要注明。Zemax总会将存在DDE服务器中的透镜数据复制一份给zemax的LDE用户。这个方法很不错,因为你不会希望一些DDE客户机未经预料的进入zemax并改变了你的透镜数据。有一些函数能直接把LDE中的透镜数据复制到DDE服务器中或者反过来也可。PushLens项指导zemax来把DDE服务器中的透镜数据复制给LDE,GetRefresh项会把LDE中的数据复制到DDE服务器中。当你在matlab中开发你的应用时,追踪你的数据并注意如何运用PushLens 和 GetRefresh是非常重要的。

从zemax的preferences对话框中,你能控制哪个扩展程序(此时是matlab)能让zemax把透镜数据从DDE服务器中发送到LDE中去。选择EDITORS标签,找到Allow Extensions to Push Lenses复选框。见下图:

Matlab有一些基础函数来执行DDE客户机操作。他们包括:

ddeinit -这个函数用来初始化DDE对话

ddereq -用来从DDE服务器中请求数据

ddeterm -结束DDE链接

基本的从matlab连接到zemax的顺序是:

1启动zemax和matlab

2使用ddeinit函数初始化DDE链接

3使用ddereq函数发送给zemax请求和接受其回复

4用ddeterm函数结束链接

Ddereq函数是以文本模式使用的,也就是说,你发送给zemax数据和接收到的回复都是字符串。为了把字符串变成更有用的类型(浮点型,双精度型,整型等),你要用到sscanf或其他函数来进行字符串变换,比如str2num函数。

你可以通过下载zemax dde toolbox来减少一些努力。这个工具箱是GPL下的开放资源,并且实现了zemax手册中zemax extensions记录的每一个数据项条目的功能。工具箱中相应的matlab函数有和数据项一样的名字,但是前缀是z。下面是开始的步骤:

1下载工具箱文件(zip文件)

2解压,并将解压后的文件放在磁盘上的任何位置,命名为MZDDE。

3启动zemax和matlab

4把MZDDE目录加入到matlab路径中以使matlab找到新函数(文件菜单>选择set path)

5如果你在matlab中键入help medde,你会得到一列关于所有工具箱中的函数和简短的描述的清单。如果是这样,那么你就可以使用工具箱 了。

6使用zDDEInit函数打开到zemax的DDE连接。这一步很重要,如果你在试图执行其他调用前不这么做,matlab会发布一个冗长的错误信息以表示一些麻烦已经发生了。你应该联系你的数学技术支持人员。如果有这样的提示的话,直接忽略,然后调用zDDEInit。

7需要的话可以调用工具箱中其他的函数。如果你要和zemax用户接口直接联系的话,使用zPushLens 和 zGetRefresh是非常明智的。当然,你也可以从matlab命令行来调用这些函数,或者把它们编入你的matlab函数和脚本里。

8调用zDDEClose来结束。在大多

zemax中如何和matlab中通信,如何在ZEMAX与MATLAB之间通信.doc相关推荐

  1. matlab中step_使用MATLAB中bertool进行通信仿真

    MATLAB中的Communication System Toolbox中的bertool图像化工具bertool提供了极为方便的通信仿真环境以测试仿真模型的误比特率性能,并且可以很好地和理论值进行对 ...

  2. 【LDPC系列1】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真

    关注公号[逆向通信猿]更精彩!!! 1. 构造编码器对象 采用MATLAB内置的comm.LDPCEncoder构造编码器对象,其中使用默认的校验矩阵,信息位长32400比特,码长64800比特,该校 ...

  3. matlab 射频滤波器,第12章射频(MATLAB仿真在现代通信中的应用).ppt

    在微波频段,工作波长与导线尺寸处在同一量级.在传输线上传输的射频信号的电压.电流信号是时间及传输距离的函数.同轴线.波导.微带是常用的微波信号传输介质. 波导中的电磁场分布与工作波长.波导的几何尺寸有 ...

  4. 通信原理 | 信道模型 | matlab中瑞利衰落信道模型中的函数:raylrnd、raylpdf、raylcdf、raylinv、raylstat、raylfit

    matlab中瑞利衰落信道模型中的函数 1 matlab中的raylrnd(瑞利随机数) 2 matlab中的raylpdf(瑞利概率密度函数) 3 matlab中的raylcdf(瑞利累积分布函数) ...

  5. MATLAB中,信号的频谱图该怎么绘制?横坐标如何标注出频率值?

    一.什么是频谱? 频谱的全称是频率谱密度.在对时域信号进行认识和研究的过程中非常不便,那我们该如何更直观地认识信号,更清楚地了解信号的特点呢? 利用傅里叶变换将时域信号变换到频域. 我们知道,在通信领 ...

  6. matlab中函数的公式计算,MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写一程序, 输入自变量的值,输出函数值....

    (x,y)=x+y(x>=0&y>=0)f(x,y)=x+y*y(x>= 由热心网友提供的答案1: 对于函数Sa(t)=sin(x)/x,其中x∈[-10π,10π],mat ...

  7. matlab中仿真丢包,使用MATLAB进行误比特率(BER)仿真----转载

    原作者:James E. Gilley 译者:H. X. Xia 1. 引言 由于Matlab 具有简单的描述语言和优秀的数据图形化能力,MATLAB成为进行数字通信系统仿真的理想工具.在数字通信领域 ...

  8. matlab保存所有图,Matlab中图片保存的5种方法

    matlab的绘图和可视化能力是不用多说的,可以说在业内是家喻户晓的. Matlab提供了丰富的绘图函数,比如ez**系类的简易绘图函数,surf.mesh系类的数值绘图函数等几十个.另外其他专业工具 ...

  9. matlab求信号的瞬时相位,phrase MATLAB中关于信号瞬时相位 频率的提取的代码,值得学习,很实用 267万源代码下载- www.pudn.com...

    文件名称: phrase下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 2403 KB 上传时间: 2014-05-06 下载次数: 94 提 供 者: 杨 ...

  10. MATLAB中FIR滤波器的时延溢出问题详解:线性相位对信号造成的时延溢出及其消除方法,以及fir1等函数的使用

    1.问题由来: 前段时间在对用MATLAB处理试验数据时,需要对多路信号进行滤波后做同步,在这个过程中使用MATLAB中自带的 fir1 函数以及Filter Designer工具箱(FDATool) ...

最新文章

  1. Go 知识点(10) — 子协程能否使用主协程变量
  2. SQL的不合理有效性
  3. 快排--java实现
  4. 悟空CRM横空出世 为中小型企业献智慧
  5. 稀疏性和L1正则化基础 Sparsity and Some Basics of L1 Regularization
  6. Exchange系列—使用系统自带的备份工具来备份数据库
  7. ChartDirector资料小结
  8. Microsoft Asp.Net Ajax框架入门(12) 了解异步通信层
  9. 手机流量共享 linux,linux – 通过HTB共享带宽和优先处理实时流量,哪种方案更好?...
  10. linux修改mysql配置文件_CentOS7离线安装 mysql,超细步骤,基础配置,90%小白10分钟学会...
  11. ubuntu下vscode字体间距 空格间距太小 增大间距
  12. 一文搞懂深度学习所有工具——Anaconda、CUDA、cuDNN
  13. 3D图形渲染及数字图像处理算法相关文集
  14. Google的C++编程规范总结
  15. java微信qq登录接口开发_微博、微信、QQ第三方登陆实现 javaweb_thridlogin
  16. CSS系列之连续的字母或数字在Html盒子中不会自动换行,直接溢出
  17. DC-DC电源设计[基于MP2315]
  18. 《MATLAB编程》例题-画分段函数图像
  19. CTF-SMB信息泄露【简单易懂】
  20. dz diy html用户信息,Discuz教程:个人资料设置只显示用户名的解决方法

热门文章

  1. 办公技巧:PDF转DWG格式的两种简单方法
  2. win7 升级到 win10
  3. keep跑步数据修改器_Keep蓄势变现
  4. 计算机网络实验一VLAN间路由
  5. java获取本机物理ip地址吗_Java获取本机所有ip地址
  6. Hopper调试个人知识管理软件myBase
  7. 计算机计费管理系统,中央空调时间型计费管理系统-中央空调计费系统
  8. 阿里Sophix 集成
  9. Java中异或的操作
  10. 联想电脑进入BIOS曾经走过的“坑”