(系统分析与集成专业论文)一种基于vc与matlab接口的预测控制仿真系统的设计.pdf_第1页
(系统分析与集成专业论文)一种基于vc与matlab接口的预测控制仿真系统的设计.pdf_第2页
(系统分析与集成专业论文)一种基于vc与matlab接口的预测控制仿真系统的设计.pdf_第3页
(系统分析与集成专业论文)一种基于vc与matlab接口的预测控制仿真系统的设计.pdf_第4页
(系统分析与集成专业论文)一种基于vc与matlab接口的预测控制仿真系统的设计.pdf_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 文章开始部分详细讨论了m a t l a b 与高级语言的编程接口方法,对目前已 有的接口方法进行了系统总结,分析了这些方法的优势、缺陷和使用条件。然 后结合控制系统预测控制算法的特点文章提出了一种基于c o m 组件实现 m a t l a b 与高级语言接口的方法,利用这种方法只需要对用m a t l a b 语言编 写的控制算法的宰m 文件进行简单的修改,c o m 生成器能把m a t l a b 开发的 预测控制算法做成组件,这些组件作为独立的c o m 对象,可以直接被v i s u a l c + + 、d e l p h i 或其他任何支持c o m 的语言所引用,实现程序调用。这种方法是 真正意义上能利用m a t l a b 提高开发效率的方法,对于不同的程序几乎都可以 用同样的方法实现,大大提高了该方法的稳定性,在实际应用中具有极大的应 用价值。在后面介绍的控制系统中,这种方法的成功证明了该方法的实用性。 然后文章详细讨论了一种基于v i s u a lc + + 平台的预测控制仿真系统的设计 与开发全过程。对系统开发过程中的各种混合编程的方法进行了详细的介绍, 以及对界面实现、输入输出参数控制等方面都进行了介绍。 文章对预测控制系统算法进行了理论介绍,主要介绍了预测控制算法中的 g p c 算法、改进的p i d g p c 算法和s m i t h 预估控制三种控制算法的实现。改进 型p i d g p c 算法主要将广义预测算法和传统的p i d 控制结合起来则不但能克服 过程中的大滞后、非线性和时变的影响,还能显著地克服过程控制中的突变性 扰动。接着提出一种s m i t h 预估补偿控制方案,它针对纯滞后系统中闭环特征 方程含有纯滞后项,在p i d 反馈控制基础上,引入了一个预估补偿环节,从而 使闭环特征方程不含纯滞后项。s m i t h 预估控制算法从理论上解决了时滞系统的 控制问题,应用于本系统开发中具有良好控制品质的特点。为预测控制系统软 件的实现提供了理论基础。 总之,文章介绍了一种以v c + + 作为开发平台,利用m a t l a b 作为数据处 理工具、算法开发工具的预测控制仿真系统的设计与实现。该系统不仅充分发 挥了v c + + 在w i n 3 2 系统下快速开发应用程序的强大优势,而且充分利用了 m a t l a b 在开发控制算法上的长处,这使得开发的预测控制算法系统在平台开 放、易于扩充、二次开发能力上具有较大优势。实验结果表明,本系统开发方 案是切实可行的,开发的预测控制系统具有开发周期短、界面美观、控制稳定、 控制算法先进、软件成本低等特点。 关键词:v i s u a lc + + ,m a t l a b ,预测控制算法,c o m 组件 a b s t r a c t a r t i c l eh a sd i s c u s s e d 也ep r o g r a m m i n gi n t e r f a c em e t h o do fm a t l a ba n dh i g h g r a d e l a n g u a g ep a r t i a l l yi nd e t a i lf i r s t a n dh a sa n a l y z e dt h ed e f e c ta n da d v a n t a g ea n du s i n gc o n d i t i o n o ft h e s em e t h o d s t h e na r t i c l eh a v ep u tf o r w a r dt h em e t h o dt h a tu s i n gc o m c o m p o n e n t sr e a l i z e t h ei n t e r f a c eb e t w e e nm a = n 。a ba n dh i 曲一g r a d el a n g u a g e s u s i n gt h i sk i n do fm e t h o dn e e d st o m o d i f yt h e mf i l e so fc o n t r o la l g o r i t h mw r i t t e ni nm a t l a b u s i n gm 觚,a bc o mb u i l d e r t o o lc a nm a k ec o mc o m p o n e n tf o rt h ep r e d i c t i v ec o n t r o la l g o r i t h m ,w h i c ha si n d e p e n d e n t l y c o mo b j e c t sa n dc a r lb eu s e db yv i s u a lc + + d e l i p ho ra n yo t h e rl a n g u a g et h a ts u p p o r t sc o m 眦sk i n do fm e t h o dc a l lr a i s ep r o g r a md e v e l o p m e n te f f i c i e n c y , r a i s e st h es t a b i l i t yo f a l g o r i t h m , a n dh a sg r e a tc o m m e r c i a lv a l u ei nt h ea c t u a la p p l i c a t i o n t h e na r t i c l eh a sd i s c u s s e dt h ed e s i g no ft h ep r e d i c t i v ec o n t r o ls i m u l a t i o ns y s t e mi nd e t a i l a n dg od e e pi n t oa n a l y s i so ft b em i x e d - p r o g r a m m i n gm e t h o di nc o b r s eo fd e v e l o p i n gs y s t e m s u c ha si n t e r f a c er e a l i z i n g t h ec o n t r o lo fi n p u ta n do u t p u tp a r a m e t e r se t c 1 1 1 ep r e d i c t i v ec o n t r o l a l g o r i t h mm e n t i o n e di nt h ea r t i c l ei sd i s c u s s e dm a i n l yt ot h r e ea l g o r i t h m s :g p ca l g o r i t h m ,t h e i m p r o v e dp i d g p ca l g o r i t h ma n ds m i t hp r e d i c t i o nc o n t r 0 1 1 1 1 ei m p r o v e dp i d g p ca l g o r i t h m c o m b i n e dt h ev i r t u e so ft h et w oa l g o r i t h m so fp i da n dg p ca l g o r i t h m ,w h i c hc a na c h i e v eg o o d p e r f o r m a n c e 、析mn o n - m i n i m u n - p h a s e u n s t a b l ea n dv a r i a b l ed e a dt i m em o d e l s t h e np r o p o s e sa m e t h o do fp r e d i c t i o n sc o m p e n s a t i o nc o n t r o lb a s e do ns m i t hp r e d i c t o r , w h i c hc i t e dap r e d i c t i v e c o m p e n s a t i o nb a s e do np i df e e d b a c kc o n t r o lt oe x c l u d et h ep u r et i m e - d e l a yi t e mi nt h e c h a r a c t e r i s t i ce q u a t i o n s m i t hp r e d i c t i v ec o n t r o la l g o r i t h ms o l v e dt h et i m e d e l a yi nt h e o r y , w h i c hh a sg o o dc o n t r o lp e r f o r m a n c ea n d p r o v i d e sat h e o r yb a s i sf o rd e s i g nt h ep r e d i c t i v ec o n t r o l s o f t w a r e i naw o r d ,an e wm e t h o do fd e s i g na n dr e a l i z a t i o nf o rp r e d i c t i v ec o n t r o ls i m u l a t i o ns y s t e m b a s e do nv c + + p l a t f o r mw h i c hu s i n gm a t l a ba sd a t ap r o c e s s i n gt o o l si sd i s c u s s e di n t h i s p a p e r t h es y s t e mn o to n l ye x e r t e d 也es u p e r i o r i t yo fv c - h - o nd e v e l o p i n go nw i n 3 2p l a t f o r m b u ta l s om a d eu s eo ft h ea s c e n d a n c yo fm a t l a bo l ia l g o r i t h m t h i ss y s t e mh a sal o to f a d v a n t a g e so no p e ns y s t e ma r c h i t e c t u r e ,e x p a n s i b i l i t ya n ds e c o n dd e v e l o p m e n te t c e x p e r i m e n t r e s u l ts h o w st h a ti ti sc o n s c i e n t i o u s l yf e a s i b l et h a tt h i ss y s t e md e v e l o ps c h e m e ,a n di ti ss t e a d yi n c o n t r o l ,a d v a n c e di na l g o r i t h m ,s h o r ti 1 1t h es y s t e md e v e l o p m e n tc y c l e ,a n dl o w e rc o s t k e y w o r d s :v c + + ,m a t l a b ,p r e d i c t i v ec o n t r o la l g o r i t h m ,c o mc o m p o n e n t i i 学位论文独创性声明 本人郑重声明: 1 、坚持以_ 求实、创新一的科学精神从事研究工作。 2 、本论文是我个人在导师指导下进行的研究工作和取得的研究成果。 3 、本论文中除引文外,所有试验、数据和有关材料均是真实的。 4 、本论文中除引文和致谢的内容外,不包含其他人或其它机构已经发 表或撰写过的研究成果。 5 、其他同志对本研究所做的贡献均已在论文中作了声明并表示了谢意。 作者签名: 日期: 学位论文使用授权声明 本人完全了解南京信息工程大学有关保留、使用学位论文的规定,学校 有权保留学位论文并向国家主管部门或其指定机构送交论文的电子版和纸 质版;有权将学位论文用于非赢利目的的少量复制并允许论文进入学校图书 馆被查阅;有权将学位论文的内容编入有关数据库进行检索;有权将学位论 文的标题和摘要汇编出版。保密的学位论文在解密后适用本规定。 作者签名: 殛煎鲤鱼 i 关于学位论文使用授权的说明 本人完全了解南京信息工程大学有关保留、使用学位论文的规定,即:学校有权保留 送交论文的复印件,允许论文被查阅和借阅;学校可以公布论文的全部或部分内容,可以 采用影印、缩印或其他复制手段保存论文。 ( 保密的论文在解密后应遵循此规定) 作者签名: 日期: 导师签名:扭 南京信息工程大学硕士研究生学位论文 1 1 引言 第一章绪论 在过程控制中最成熟的控制算法是p r o ( 比例一积分一微分) 算法,已应用于目前8 0 - 9 0 以上的控制领域。然而,各种复杂系统预测控制算法,以广义预测算法( g e n e r a l i z e d p r e d i c t i v ec o n t r o l ,简称g p c ) 为例,这种算法在工业和航空航天等领域中,得到控制界的高 度重视【2 】。但是由于在线计算量大等特点,m a t l 气b 对矩阵的运算量增大,使得m a t l a b 编制的g p c 算法的运行效率低,这就使得一些复杂优秀控制算法在工业应用中受到限制。 正是这个原因,提出了一种基于v c + + 平台下预测控制算法的仿真实现,可获得较高的执行 效率以及丰富的人机界面,使工业应用不局限于传统的p i d 控制和专用软件仿真。 m a t l a b 作为一个非常优秀的科研平台,包含了自动控制、信号分析等多种工具箱, 而且m a t l a b 对于矩阵运算具有良好的效率和数值稳定性【3 】。但是m a t l a b 有本身的缺 点,就是m a t l a b 本身只能作为仿真工具来用。而不能将m a t l a b 编制的预测控制算法程 序直接应用多j d c s ( d i s t r i b u t c dc o n t r o ls y s t c r n ,集散型控制系统) 系统中。这就使得预测控制 以及其改进算法在工业应用中受到限制。要使预测控制算法及其优秀算法能够广泛的应用 到实际工业系统中,就必须解决m a t l b 与v c 接口的闯题。 v i s u a lc + + 作为一种高效的应用程序开发工具,具有丰富的人机界面以及高效的执行效 率【4 】,可以用来开发控制系统的上层管理软件,利用o p c 标准接口技术将v c 应用程序与d c s 系统有效地结合起来,使上层的v c 程序控制实际系统的数据通信。 正是这个原因,本文提出了m a t l a b c o m ( c o m p o n e n to b j e c tm o d e l ,组件对象模型) 化 工具的预测控制及其改进算法的工业应用开发技术路线【5 j ,实现v c + + 与m a t l a b 接口的混 合编程。这种基于c o m 化技术运行在v c + + 界面下中具有良好的控制特性,实现预测控制 算法的模块化集成。 1 2m a t l a b 与高级语言混合编程的提出 使用过高级语言进行开发的开发人员可能都知道,算法中涉及到对矩阵处理、数学运 算和一些图形操作时,程序设计是一件非常麻烦的工作。因为常用的高级语言中并没有包 含某个矩阵类型的数据结构,更不用说复杂的数学运算了,这时开发人员只能将大部分精 力放在基础的数据的读取和计算上。由于没有标准的计算子程序库和函数库的支持,这种 开发工作是冗长且易于出错的。n 1 a t l _ , a j 3 就是在这种需求下诞生的,它的首创者m o l e r 博 士把它命名为m a t r i x l a b o r a t o r y ( 矩阵实验室) ,就是希望能给开发人员提供一个可靠的矩 阵运算函数库,简化算法处理中的矩阵运算和数学计算。 随着m a t l a b 软件的应用范围越来越广泛,m o l e 博士等数学家与些软件专家成立 了m a t h w o r k s 公司,致力于开发、发展m a t l a b 系统。由于采用了开放式的开发思想, 南京信息工程大学硕士研究生学位论文 m a t a l b 不断吸收了各学科领域权威人士编写的应用程序。如今的m a t l a b 形成了一个 规模庞大、覆盖面极广的三十多个工具箱,其内容包括通讯( c o m m u n i c a t i o n s ) 、控制系统 ( c o n t r o ls y s t e m ) 、曲面拟合( c u r v ef i t t i n g ) 、信号处理s i g n a lp r o c e s s i n g ) 、图像处理( i m a g e p r o c e s s i n g ) 、小波分析( w a v e l e t ) 、鲁棒控帛t j ( r o b u s tc o n 打o d 、系统辨识( s y s t e mi d e n t i f i c a t i o n ) 、 非线性控制( n o n 1 i n e a rc o n t r 0 1 ) 、模糊逻辑( f u z z yl o g i c ) 、神经网络( n c u r a ln e t w o r k ) 、优化 理论( o p t i m i z a t i o n ) 、统计分析( s t a t i s t i c s ) 、虚拟现实( v i r t u a lr e a l i t y ) 等大量现代工程技术内容。 正因为m a t l a b 是一套如此优秀的数值计算、算法开发、系统仿真软件,特别是它丰 富的数学函数库、工具箱函数库、强大的数据可视化能力,使得使用过m a n ,a b 的科技人 员都为该软件的简洁、便捷、功能性强大和可靠性所震动。同时也对m a t l a b 提出了更高 的期望,希望程序运行更快、适应范围更广,希望在自己开发的应用程序中调用m a t l a b 的功能以简化程序的开发等等。m a t l a b 与高级语言混合编程的技术就是在这种背景下被 提出来的。为拓展m a t l a b 的应用范围、提高m a t l a b 运行速度出现了m e x 语言的接 口技术【6 】,而利用m a t l a b 开发应用程序的需要则促进了m a t l a b 应用程序接口技术的 发展。对于m e x ,它是m a t l a be x e c u t a b l e 的缩写。在w i n d o w s 环境中,它是扩展文 件名为d l l 的动态链接库,符合m a t l a b 的调用格式,可以在枣i n 程序中直接调用。m e x 程序是通过c f o r t r a n 程序编译得到的,编译器就是m a t l a b 提供的m e x 命令。对于m e x 我们不作深入讨论,具体方法可以参见参考文献6 的第八章。 m a t l a b 系统主要分为五大部分,分别是m a t l a b 语言、m a t l a b 数学函数库、 m a t l a b 工作环境、图形旬柄系统和m a t l a b 应用程序接口。其中m a t l a b 数学函数库 和m a t l a b 应用程序接口是应用m a t l a b 的科技人员最关心的部分,它给高级语言与 m 觚a b 接口提供了可能的方法。 m a t l a b 数学函数库是大量的各种形式的数学函数和算法的集合,它不但包括了最基 本的初等函数,而且包含了大量复杂的高级函数和算法,如贝赛尔( b e s s e l ) 函数、快速傅立 叶变换、矩阵逆运算等。用户在编写自己的应用程序时,可以调用这些函数和算法,从而 极大的方便了算法的开发。在实际开发过程中,这种方法应用非常广泛。 m a t l a b 应用程序接口是m a t l a b 为用户提供的一个功能完善的函数库,它包含了 大量的m a t l a b 与c 语言和f o r t r a n 语言之间的接口函数,是m a t l a b 的一个非常重 要的组成部分。通过它,不仅可以在m a t l a b 下以动态链接库的形式调用c 语言或 f o r t r a n 语言编写的子程序m e x 程序,而且可以在c 语言和f o r t r a n 语言中调用 m a t l a b 的函数,将m a t l a b 作为一个计算引擎,同时还能够完成m a t l a b 与外界的数 据交换,极大增强了m a t l a b 的灵活性。 1 3m a t l a b 与高级语言混合编程的研究现状 对于m a r t , a b 在应用程序中的接c i 方法,很多专家学者都做了深入的研究7 钔。大多 数学者都认为利用m a t i , a b 与高级语言进行混合编程,不仅能发挥i v i a t l a b 语言在计算 和数据图像化方面的能力,而且能充分利用高级语言在界面开发、数据库开发、执行速度 2 南京信息工程大学硕士研究生学位论文 等方面的能力,大大减轻应用开发的难度o 】。 由于m a t l a b 的开放性,决定了m a t l a b 将向用户提供一系列接口方法,以求扩展 m a t l a b 的功能。为了使用高级语言扩充m a t l a b 的处理能力和处理速度,m a t l a b 提 供了m e x 方法。为了在高级语言中开发的程序中调用m a t l a b 的处理能力,m a t l a b 则提供了应用程序接口的方法。 1 4 文章的研究目标和意义 本文的研究目标是编制一套基于m a t l a b 与v c + + 接口的预测控制算法仿真系统,形 成友好的运行界面陋”】,以实现控制算法的集成。充分利用了m a t l a b 的强大运算功能并 脱离m a t l a b 环境独立运行的新方法,最后将这种方法实现于e p a ( e t h e r n e tf o rp l a n t a u t o m a t i o n ) 过程控制实验系统中,实践证明了本方法实用可行。 1 5 文章的组织结构 第一章为绪论,介绍了文章的研究目的和意义;阐述了m a t l a b 与高级语言混合编程 的提出背景和研究现状。 第二章详细介绍了m a t l a b 与混合编程的特点、各种混编方法的优缺点及适用条件。 第三章介绍了预测控制算法及先进控制算法的理论基础,以及s m i t h 预估控制算法理 论。为v c + + 界面下实现预测控制算法仿真系统的集成提供理论基础。 第四章在前面介绍的混编接口基础上,利用c o m 组件等方法实现在v c + + 界面下集成 预测控制算法的具体步骤及系统软件的实现过程。 第五章指出了本文所提出接口方法的不足和条件限制及阐述今后的研究方向。 3 南京信息工程大学硕士研究生学位论文 第二章m a t l a b 与高级语言混合编程的研究 2 。1m a t l a b 与高级语言混合编程的特点 m a t l a b 是m a t l l w o r l ( s 公司推出的一套公认的数值计算和数字可视化软件。它集数值 计算、算法开发、图形显示、系统仿真于一体,功能非常强大,成为控制界进行算法研究 的必备工具。其丰富而高效的数学函数库可以大大的缩短程序的算法设计开发周期,这就 使得研究m a t l a b 与高级语言混合编程方法变得更具现实价值。 能与m a t l a b 接口的高级语言非常多,常见的有u s u a lc 抖、b o r l 觚dc + + b u i l d e r , d e l p h i ,f o r t r a n ,s m lb 豳i c ,j a v a ,由于编译器的流行性不同,其中前三种语言与m a t l a b 接口最具实用价值。对于每种语言,m a t l a b 提供的接口方法都有所不同,我们这里主要 研究s u a lc + + 编译器的接口方法。 m a t l a b 与高级语言接口的方法有很多种,按各种方法要求的环境不同,分为两类: 一类为需要m a t l a b 环境支持的调用方法,这种方法要求系统安装m a t l a b 环境,方法 如:调用引擎( e n g i n e ) 函数库方法、使用a c t i v e x 的方法。另一类是能生成独立可执行程序 的方法,这种方法不需要安装m a t l a b 环境,而只需要拷贝部分m a t l a b 的动态链接库。 这类方法如:直接调用数据函数库方法、使用编译器生成的独立可执行代码方法。这些方 法都有它们各自的优点和缺点,有它们各自的使用条件。下面将就各种方法的特点、局限 性分别进行讨论。 2 2m a t l a b 与高级语言混合编程 2 2 1 调用e n g i n e 的方法 在众多m a t l a b 与高级语言混合编程方法中,其中“引擎方法”功能最为强大,采用 了客户服务器模式,以高级语言开发的应用程序作为前端客户机,向m a t l 墟引擎传递命 令和数据信息,m a t l a b 作为服务器计算,并将结果返回给应用程序。“引擎方法”应用最 为广泛,它能最大限度地调用m a t l a b 的功能。这种调用方法能在多种编程方法中实现, 如在眦ic + + 中调用引擎方法【1 禾1 6 1 ,在c + + b u i l d e r 中调用引擎方法【1 7 1 9 1 ,在d e l p h i 中调用 引擎方法等等。 通过m a t l a b 饥g i n e 来实现m a t l a b 与高级语言之间的无缝连接,这样可以在不丧失 m a t l a b 任何功能的前提下充分发挥二者的优势。应用程序开发者可以用m a t l a b 编写数 值计算和图形显示方面的程序,即把m a t l a b 作为高级语言开发的主程序的一个计算和显 示的引擎,从而大大提高开发功能强大的应用程序的效率。 b i a t l a be n g i a e 提供了一种在用户程序进程中与独立的m a t l a b 进程通讯的方法,在 u n 环境下是通过管道( p i p e ) 来实现的,而在w i n d o w s 环境下是使用a c f i v e x 技术实现的。 4 南京信息工程大学硕士研究生学位论文 m a t l a be n g i n e 提供给用户一组m a t l a ba p i 函数,它有c 和f o t r a n 两个版本,表1 表2 列出 y m a t l a b 髓g i i l e 的c 语言函数及类型创建函到2 1 1 。用户不用去关一t = i , e l m a t l a be n g i n e 是 如何实现的,只需利用这些函数,c 开发者就可以方便地操纵m a t l a b 完成所需的功能。 结合m a t l a b 其它的一些数据类型及a p i 函数,还可以在m a t l a b 和v c 编写的应用程序进 程之间传递数据,从而达到二者之间的无缝连接。 表1 m a t l a be n g i n e 的c 语言函数: 函数名功能 e n g o p e n启动引擎,建立与服务器连接 e n g c l o s e请求释放与服务器,关闭引擎 e n g g e t a r r a y 从m a t l 气b 引擎获取矩阵数据 e n g a u t a r r a y应用程序向m a l i ,a b 引擎发送矩阵数据 e n g e v a l s t r i n g请求m a t l a b 服务器执行m a t l a b 命令 e n g o u t p u t b u f f e r创建缓冲区以获取m a t i a b 文本输出 表2类型创建函数表 函数名功能 m x c r e a t e d o u b l e m a t r i x 创建二维d o u b l e 形矩阵 m x c r e a t e c e l l a r r a y创建多维单元矩阵 m x c r e a t e c e l l m a t r i x 创建二维单元矩阵 m x c r e a t e c h a r a r r a y创建多维字符矩阵 m x c r e a t e s p a r s e创建稀疏矩阵 m x c r e a t e s t r i n g 创建字符串 m x c r e a t e s t r u c t m a t r i x 创建结构体矩阵 1 采用e n g i n e 方法对编译器配置步骤如下: 要在v c 中成功编译m a = n 。a b 引擎程序,必须包含引擎头文件e n g i n e h 并引入m a t l a b 对应的库文件l i b m x 1 i b 、l i b m a t 1 i b 、l i b e n g 1 i b 。具体的说,打开一个工程后,做如下设置( 以 v i s u a lc + + 6 0 为例) : 1 ) 通过菜单工程选项,打开设置属性页,进入d i r e c t o r i e s 页面,在目录下拉列表框中 选择i n c l u d ef i l e s ,添加路径:t c :k m a t l a b e x t e r n k i n c l u d e ”( 假定m a t l a b 安装在c a m a t l a b 目 录) 。 2 ) 选择l i b r a r yf i l e s ,添加路径:c :n a t l a b e x t e m x l i b w i n 3 2 k m i c r o s o f i k m s v c 6 0 。 3 ) 通过菜单工程设置,打开工程设置属性页,进入l i n k 页面,在o b j e c t l i b r a r ym o d u l e s 编辑框中,添加文件名l i b m x 1 i bl i b m a t 1 i bl i b e n g 1 i b 。 以上步骤1 ) 、2 ) 只需设置一次,而步骤3 ) 对每个工程都要单独设定,对于其它c + + 编译 器如b o r l a n dc 抖b u i l d e r ,设置大体相同,不再赘述。 5 南京信息工程大学硕士研究生学位论文 2 引擎a p i i 函数详解2 2 】 在调用m a t l a b 引擎之前,首先应在相关文件中加入一行:# i n c l u d e e n g i i l g h ”,该文 件包含了引擎a p i 函数的说明和所需数据结构的定义。可以在v c 中调用的引擎函数分别如 下: 1 ) 引擎的打开和关闭 e n g o p e n - - 打开m 觚,a b g i n e 函数声明: e n g i n e 唪e n g o p e n ( c o n s tc h a r s t a r t c m d ) ; 参数s t a r t c m d 是用来启动m a t i ,a b 引擎的字符串参数,在w i n d o w s 操作系统中只能为 n u l l 。函数返回值是一个e n g i n e 类型的指针,它是在e n g i n e h 中定义e n g i n e 数据结构。 e n g c l o s e 一关闭m a n ,a b 引擎 函数声明: h a te n g c l o s e ( e n g i n e 乖印) ; 参数印代表要被关闭的引擎指针。函数返回值为0 表示关闭成功,返回1 表示发生错误。 例如,通常用来打开关闭m a t l a b 引擎的代码如下: e n g i n e 幸e p ;定义m a t i a b 引擎指针。 i f ( 1 ( e p = e n g o p e n ( n u l l ) ) ) 测试是否启动m a n ,a b 引擎成功。 m e s s a g e b o x ( ”c a n ts t a r tm a t l a be n g i n e ! ”) ; e x i t ( 1 ) ; e n g c l o s e ( e p ) ;关闭m 觚,a b 引擎。 2 ) 向m a t l a b 发送命令字符串 e n g e v a l s t r i n g - - 发送命令让m a t l a b 执行。 函数声明: i n t 饥g e v a l s t r i n g ( e n g i n e 幸印,c o n s tc h a r 木s t r i n g ) ; 参数印为函数e n g o p e l l 返回的引擎指针,字符s t r i n g 为要m a t l a b 执行的命令。 函数返回值为0 表示成功执行,返回l 说明执行失败( 如命令不能被m a t l a b 正确解释 或m a t l a b 弓i 擎已经关闭了) 。 3 ) 获取m a t l a b 命令窗口的输出 要在v c 中获得函数e n g e v a l s t r i n g 发送的命令字符串被m a t l a b 执行后在m a t l a b 窗 口中的输出,可以调用e n g o u t l m t b u f f e r 函数。 函数声明: h a te n g o u t p u t b u f f e r ( e n g i n e 印,c h a r ,i n tn ) ; 参数印为m a t l a b 引擎指针,p 为用来保存输出结构的缓冲区,n 为最大保存的字符个 数,通常就是缓冲区p 的大小。该函数执行后,接下来的e l l g e v a l s 幽g 函数所引起的命令行 6 南京信息工程大学硕士研究生学位论文 输出结果会在缓冲区p 中保存。如果要停止保存,只需调用代码:e n g o u t p u t b u f f e r ( e p ,n u l l , 0 ) 。 4 ) 读写m a t l a b 数据 ( 1 ) 从m a :r i ,a b 引擎工作空间中获取变量。 m x a r r a y * e n g g e t v a r i a b l e ( e n g i n e * e p ,c o n s tc h a r n a m e ) , 参数印为打开的m 觚,a b 引擎 指针,n a m e 为以字符串形式指定的数组名。函数返回值是指向n a m e 数组的指针,类型为 m x a r r a y 。 ( 2 ) 向m a t l a b 引擎工作空间写入变量。 i n te n g p u t v a r i a b l e ( e n g i n e 幸印,e o n s tc h a r 木n a l r l e ,c o n s tm x a r r a y 搴n a p ) ; 参数印为打开的m a t l a b 弓i 擎指针,m p 为指向被写入变量的指针,n a l l l e 为变量写入后 在m a = r i ,a b 引擎工作空间中的变量名。函数返回值为0 表示写入变量成功,返回值为1 表示 发生错误。 5 1 调用引擎时显示隐藏m a t l a b 主窗口 默认情况下,以e n g h l e 方式调用m a = r i 。a b 的时候,会打开m a t l a b 主窗1 2 ,可在其中 随意操作。但有时也会干扰应用程序的运行,可用以下设置是否显示该窗口。 b a te n g s e t v i s i b l e ( e n g i n e 宰e p ,b o o lv a l u e ) ; 参数印为打开的m a t l a b 弓l 擎指针,v a l u e 为是否显示的标志,取值i r u e ( 或1 ) 表示显 示m a t l a b 窗口,取值f a l s e ( 或0 ) 表示隐藏m a t l a b 窗口,函数返回值为0 表示设置成功, 为1 表示有错误发生。 要获得当前m a t l a b 窗口的显示隐藏情况,可以调用函数: i n te n g g e t v i s i b l e ( e n g i n e 印,b o o l v a l u e ) : 参数印为打开的m a t l a b 弓l 擎指针,v a l u e 为用来保存显示隐藏情况的变量( 采用指 针方式传递) ,函数返回值为o 表示获取成功,为l 表示有错误发生。 与其它各种接口相比,引擎所提供的m a t l a b 功能支持是最全面的。通过引擎方式, 应用程序会打开一个新的m a t l a b 进程,可以控制它完成任何计算和绘图操作。对所有的 数据结构提供1 0 0 的支持。同时,引擎方式打开的m a t l a b 进程会在任务栏显示自己的图 标,打开该窗口,可以观察主程序通过e n g i n e 方式控制m 觚,a b 运行的流程,并可在其中 输入任何m a t l a b 命令。但是m a ,a b 引擎需要m a t l a b 环境支持的调用方法,这种方法 要求系统安装m a t l a b 环境,降低了系统的快速性。 在此基础上,一些能使程序脱离m a t l a b 环境的方法被提出来。直接调用c c h 数学 函数库的方法因为其实现简单两广泛使用,m a t l a b 数学函数库提供了约3 5 0 个核心函数, 可用于任何能调用c c + + 函数的地方。正因如此,在常见的c + + 开发环境中可以直接调用 c c + + 数学函数库。这种方法能脱离m a t l a b 的安装环境,但是能调用的相对于m a t l a b 工具箱函数来说还是太少了,限制了这种方法的功能。下面提出几种能脱离m a t l a b 运行 环境的混编方法。 7 南京信息工程大学硕士研究生学位论文 2 2 2m c c 命令 m a t l a b w , 现以后,以其特有的简单便利、强大功能很快拥有了相当多的使用者。但 是m a t l a b 也存在一些问题,比如循环执行速度慢,开发和发布应用软件不方便等。这时 候,人们自然就会想到是不是可以吧m a t l 蝠程序通过编译器编译为c c + + 语言以方便其 他程序调用。如图1 所示: 图lm a t l a b 编译器的基本功能 从m a t l a b5 1 版本开始,m a t h w o r k s 公司推出了一系列的m a t l a b 自带编译器来解 决m a t l a b 与c 阡的接口问题。编译器m c c 可以将m a t l a b 的c c + + 数学库编译为v c 抖 编译器能识别的代码后嵌入v c + + 环蜊2 4 1 。利用m c c 编译器,可以有效提高代码的执行效 率,而且可以脱离m a t l a b 运行环境; 1m a t l a b 与高级语言接口配置 采用m c c 方法需要对m a t l a b 和v c + + 接口设置【2 5 1 ,配置步骤如下: 1 ) m a t l a b 编译器配置 首先在m a t l a b 命令提示符下输入r e b u i l d s 曲叩命令,选择编译器,( 需要注意的是 必须确保计算机上已经安装了某个版本的v c h ,本文选择v i s u a lc + + 6 0 ) 完成编译器设置。 2 ) v c + + 环境设置 ( 1 ) 设定头文件和库文件路径。在v i 卅环境菜单栏中选择t o o l s - o p t i o n s 一 d i r e c t o r i e s , 在“s h o wd i r e c t o r i e sf o r 栏中首先选择i n c l u d ef i l e s ,然后在“d i r e c t o r i e s ”中将 k e x t e m k l i b w i n 3 2 m i c r o s o f tk m s v c + + 6 0 添加进去。再次在“s h o wd i r e c t o r i e sf o r 栏中选 择l i b r a r y sf i l e s ,再在“d i r e c t o r i e s ”中添j j i :e x t e m k l n c l u d e 。 ( 2 ) 设置编译连接选项。在v c _ 卜十环境菜单栏中选择p r o j e c t - s e t t i n g ,然后选择l i n k 选 项卡,在o b j e c t l i b r a r ym o d u l e s 栏中添加m e l m c r r t 1 i bl i b t e s t 1 i b ;选择g e n e r a l 选项卡,在 m i c r o s o f tf o u n d a t i o nc l a s s e s 栏中选择u s em f ci nas h a r e dl i b r a r y 。 2m c c 编译 在v c 抖6 0 环境下,用m f ca p p w i z a r d ( e x e ) 建立程序后,为了能够成功地调用 m a t l a b 数学库和图形库,需另对工程作些必要的设置【2 6 1 。首先设置v c 头文件搜索路 径和库文件搜索路径。打开菜单t o o lio p t i o n s ,在“选项”对话框中选择“d i r e c t o r s ”属性 页,添加头文件搜索路径: c :u 江a t l a b 6 p 5 似t e r n i n c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论