用ole自动化技术控制matlab绘图1

上传人:w****i 文档编号:108501584 上传时间:2019-10-24 格式:PDF 页数:3 大小:136.82KB
返回 下载 相关 举报
用ole自动化技术控制matlab绘图1_第1页
第1页 / 共3页
用ole自动化技术控制matlab绘图1_第2页
第2页 / 共3页
用ole自动化技术控制matlab绘图1_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《用ole自动化技术控制matlab绘图1》由会员分享,可在线阅读,更多相关《用ole自动化技术控制matlab绘图1(3页珍藏版)》请在金锄头文库上搜索。

1、用 OLE 自 动 化 技 术 控 制 MATLAB 绘 图 Control of MATLAB Plotting with OLE Automatic Technique 蒋先刚 ( 华东交通大学 南昌 330013) 【 摘 要】 介绍了用 OLE 自动化技术控制 MAT LAB 绘图的一般方法和技术, 提供了用 Delphi 开发显示和控 制 MATLAB 绘图的编程实例, 讲述了用MAT LAB 绘图的几种基本方法和作用。 【 关键词】 MAT LAB,Delphi, OLE 自动化技术 ABSTRACT The general method and technique to cont

2、rol MATLAB plotting with OLE automatic technique is presented. An pro- gramming example,Delphi development of display and control of MATLAB plotting,is given,and several primary ways and applica- tion about MATLAB plotting is stated. KEYWORDS M ATLAB, Delphi, OLE automatic technique 1 概 述 MATLAB 是一个

3、功能强大的计算机辅助设计软 件, 被称为“ 草稿纸式的科学计算语言” , 它具有强大的 符合、 数值计算、 矩阵运算以及图形显示的功能, 它被 广泛地应用在数字信号处理、 自动控制、 图象处理、 神 经网络、 优化设计、 模糊逻辑、 仿真、 小波分析等方面。 MATLAB 同时支持 OLE 自动化技术, 能够被任何的 客户程序所控制。任何一个程序都可被设计成具有客 户和服务器双重性质, 服务器程序中的对象可被客户 程序获得, 其属性和方法可被客户程序编辑和使用。 MATLAB 虽然具有可视化 GUI 设计工具 Guide, 为 用户化的程序界面设计提供方便, 但用高级语言设计 的用户程序具有更

4、好的专业适宜性。如果客户程序用 Delphi 5 设计, 许多实时数据和复杂数据的准备及参 数的调整在客户程序中完成, 而复杂的数值运算和图 形结果输出在 MATLAB 中完成。Delphi 5 具有良好 的可视开发环境, 它同时具有高效的数据库和网络开 发能力, 其良好的多媒体开发环境为各种工程 CAI 软 件的开发提供一个高效的工具。 2 客户程序操作 OLE 自动化对象的基 本方法 客户程序获得和控制服务器程序的对象一般过程 如下: 初始化并创建自动化对象, 获得服务器程序的 句柄, 将服务器程序设置为该客户程序的一个服务工 具, MAT LAB 提供一个自动化对象, 它的外部名称为 M

5、atlab. Application。如将 MATLAB 作为曲线、 曲面 显示的画板和矩阵运算的运算工具, 为了产生和获得 MATLAB 对象, 在Delphi 中用下列语句编程即可: MatLab= GreateOleObject( Matlab. Application) 编辑和操纵自动化对象的属性和方法, 它可编 辑对象窗口的颜色和大小及成员数据值, 使用其成员 函数, 输入参数而输出经服务器程序处理的信息。 如获 得 MAT LAB 的对象后, 将其窗口的最小化或最大化 的程序语句如下所示: MatLab. MinimizeCommandWindow( ) ; MatLab. Max

6、imizeCommandWindow( ) ; 客户程序释放服务器程序的对象, 在 Delphi 中 用下列语句编程既可释放 MATLAB 对象: MatLab. Quit; MatLab 的自动化对象一个主要函数是 Execute ( Command) , 凡是在 MatLab 的命令窗口可键入的执 行命令都可用该函数调用。MatLab 的自动化对象对 数组的获取和设置用函数来 GetFullMatrix 和 Put- FullMatrix 达到。 3 Delphi 控制 MATLAB 绘图的几种 基本方法和作用 3. 1 直接控制 MATLAB 绘图 在科学研究和工程设计过程中, 将一些测

7、量的数 * 20000906 收到, 20001220 改回 * * 蒋先刚, 男, 1958年出生, 硕士, 副教授, 1985 年毕业于北京航空学院, 19971998 年留英, 发表论文 50多篇, 研究方向: 计算 机图形学、 大型工程软件设计等。 5 第 14 卷 第 3 期 电 脑 开 发 与 应 用 (总 111) 图 1 曲线、 曲面实验的程序界面 据信息和数学公式描述的函数用图形的方式显示出来, 将为人们更直观和形象地分析问题提供便利。 用高级语 言也可绘制出曲线和曲面, 但曲线和曲面的描述缺乏通 用性, 它的量化和刻度表达不方便, 需要做的预处理工 作比较多, 如要绘制出一

8、个三维的阴影图象, 既是使用 OPENGL 编程技术, 其程序段也是非常长的。 事实上许 多图形、 图象的处理完全可以交给 MAT LAB 来处理, 我们设计工作的重点主要放在应用系统的构成和可利 用工具的合理使用上。如在开发曲线、 曲面学习或电工 原理的计算机辅助教学软件的时候, 烦琐的计算和绘图 细节通过 OLE 自动化技术让 MATLAB 去完成, 我们 关心的是教学内容的级联表达和多媒体界面设计的合 理性。 图 1是一个曲线、 曲面实验的程序界面。 用户选择 函数式曲面菜单的一项后将执行下列程序段。 显示一函数式曲面的程序段: ProcedureTM atLabForm.Surface

9、lClick( Sender: TObject) ; Var MatLab: OleVariant: / /定义 OLE 对象 ReturnString:AnsiString: / /定义返回字符串 Begin / /产生和获得 M AT LAB 对象 MatLab: =CreateOleObject( Matlab.Application ); M atLab. MinimizeCommandWindow; / /MAT LAB 窗口 最 小化 ReturnString: = MatLab. Execute( x = - 80. 5 8; ) ; ReturnString: = MatLab

10、. Execute( y= x; ) ; / /设置 x, y的区域 / /将曲面区域网格化 ReturnString: =MatLab.Execute( X,Y =meshgrid (x, y) ; ); ReturnString: = MatLab. Execute( R= sqrt (x. 2+ Y. 2)+ eps; ); ReturnString: =MatLab.Execute( Z= 2*sin(R). / R; ) ; / /绘制出三维的阴影曲面 ReturnString: =M atLab.Execute(Surf(X,Y,Z) ) ; / /在服务器程序中保存图象 Retu

11、rnString: = M atLab. Execute ( Print- dbmp16m C: Surfacel. bmp ); / /在客户程序中获取和显示图象 Imagel. Picture. LoadFromFile( C: Surfacel. bmp ); End; 该程序段将用于绘制图 1 的 MAT LAB 的命令和 数据以字符串的形式送入到 MATLAB 中, 绘制后的 图形以* . BMP 格式保存在磁盘中, 而用户界面中的 图形显示控件将它调入并显示, 而 MatLab 中的一条 命令 Surf( X , Y, Z ) 就可绘制出三维的阴影曲面, 如 用高级语言设计同样显示

12、效果的程序需要花费大量的 设计时间和需要较深的理论基础和技巧。任意的曲线 和曲面可从编辑输入框中输入表达其方程的字符串。 3. 2 客户程序为复杂数据的准备及参数调整的前置 处理器 在科学实验和工程测量中, 我们得到一个三维的 离散数据, 如三维测量仪器将以一定格式的文件保存 它, 这些离散数据可用手工输入到 MATLAB 绘图所 要求填充的矩阵中, 手工输入的速度和正确性都很难 得到保障, MATLAB 读入的数据文件格式有一定的 要求, 这时如将数据的准备工作放在用户程序中, 将用 户程序作为数据处理的前置处理器, 则它为各种数据 文件的格式转换和可视状态下的数据输入及调整提供 一个良好的

13、工具。 各种文件格式的图象输出, 图象处理 的复杂数值计算将由用户程序控制 MAT LAB 完成。 在地形数据的处理过程中, 通过用户程序的数据整理 和输入, 在 MATLAB 中可产生三维地形图和等高线 图, 这为工程选线提供直观的地形分析模型, 而优化选 线和模拟选线可在高级语言设计的客户程序中完成, 既将测量的数据通过计算或手工编辑可变成一组新的 数据, 这一新的图形数据送入 MAT LAB 中而显示出 新的图形, 一条假想的公路将在该图形中显示出来, 如 要加以修正, 可在客刻程序中反复这个工程, 其工程的 土方量和工程预算也在客户程序中依经验数据和计算 公式得到。 既与工程有关的数据

14、库和程序在 Delphi 中 完成, 与复杂数值运算和、 仿真和图象处理由 MAT - LAB 完成。 3. 3 将 MATLAB作为图形描述参数的提取工具 在工程 CAD 过程中, 需要建立充实的工程数据 库和记录经验曲线和曲面, 曲线的记录一般不是以图 形文件的格式来保存经验图形, 而是用保存图形系列 特征值或拟合曲线的拟和系数来记录曲线。如有一组 实验曲线坐标值, 用多项式p ( x) 来拟合向量x 和 y 中 ( 下转第 9 页) 6 ( 总 112) 用OLE自动化技术控制MATLAB绘图 2001 年 图 4 动态仿真结构框图 图 5 三维实体绘图界面菜单 的各自运动又不能影响到动

15、臂的运动。但按正常情况 的建模顺序, 只能实现父体带动单子体运动, 如按顺序 建立的动臂、 斗杆和斗杆油缸三个实体, 只能是动臂带 动斗杆 运动, 而斗杆带动斗杆油缸运动, 但这是我们 不希望看到的。为了解决这一矛盾, 在此采用“ 嵌套矩 阵 堆栈” 手段, 即在建立动臂模型( 子体 1) 之前, 先 PushMatrix ( 矩阵堆栈) 而后建立动臂模型, 接着建立 斗杆( 子体 2) 模型, 这两步即自动按顺序实现了动臂 到斗杆的继承, 此时再一次 PushMatrix, 建立斗杆油 缸, 然后 PopMatrix, 再 PoPMatrix 即结束了矩阵堆 栈, 这样就实现了当动臂( 子体

16、 1) 运动时同时带动斗 杆和斗杆油缸( 子体 2 和子体 3) 进行运动。按照这种 方法即可实现动臂、 斗杆、 铲斗等类似的多子体多自由 度继承运动。 图 6 工作装置三维 实体动态仿真 图 7 挖掘机三维实 体动态仿真 图 4 为挖掘机动态仿真结构框图。图 5 是三维实 体绘图界面菜单。 其内容都是采用Open GL 技术而制 作。图 6 是该机工作装置三维实体动态仿真结果。图 7 是挖掘机三维实体动态仿真结果图。从以上两图可 见动态仿真模拟的立体感强, 结果清晰, 产生了真正的 逼真效果, 充分说明了 Open GL 的图形功能及其在动 态仿真中的优势。 4 结 论 阐述了 Open GL 的功能和特点, 指出它具有强大 的三维建模功能及帧缓存动画技术, 并结合实例, 给出 了多子体连接系统动态模拟的特点和过程, 为该系统 的动态仿真和 CAD 绘画提供了一种新方法。 参 考 文 献 1 何亮, 朱自强. Visual C

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号