VC++与Matlab混合编程技术在现代控制理论系统仿真中的应用.docVIP

VC++与Matlab混合编程技术在现代控制理论系统仿真中的应用.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 VC++与Matlab混合编程技术在现代控制理论系统仿真中的应用   【摘要】现代控制理论中的控制系统仿真实质上是使用计算机进行控制系统的状态空间矩阵的运算,而对状态空间矩阵以及相应控制算法的编程占据了仿真过程中的主要工作量。利用VC++与Matlab的混合编程可以有效减少与矩阵运算相关的编程工作量,使得在VC++环境下的控制系统仿真变得可行且高效。本文结合单级倒立摆的LQR控制,阐述并印证了VC++与Matlab混合编程这一方法在现代控制理论系统仿真中的作用。   【关键词】VC++;Matlab;混合编程;现代控制理论   一、引言   现代控制理论是建立在状态空间基础上的一种控制理论,是自动控制理论的一个主要组成部分。在现代控制理论中,包括线性系统和非线性系统,定常系统和时变系统,单变量系统和多变量系统,它们在建模之后都表达为矩阵形式,因此通过计算机进行控制系统的仿真,实质就是利用计算机来进行矩阵运算。小型控制系统进行仿真时,所涉及的控制算法以及矩阵运算量都是有限的,因此对仿真的效能要求较低。而当需要进行复杂系统的仿真试验时,不仅编写相应的控制算法消耗大量的人力,较低的程序执行效率也将消耗大量的计算机运算能力,因此选取和使用快捷高效的仿真开发方法显得尤其必要。   Matlab是一种应用广泛的数学类科技应用软件,在数值运算尤其是矩阵运算方面有着非常好的表现,用户不需要深刻了解算法及编程技巧,只需掌握了入门的数学知识和程序设计能力就可以利用其进行复杂的科学计算,如今已经成为学界理论分析和实验研究所必须掌握的软件工具之一。但限于其本身是一种解释方式运行的高级计算机语言,在进行重复计算工作时执行效率较低,且运算过程不能脱离计算机环境进行。VC++是微软公司推出的开发环境VisualStudio中的一个组成部分,用户可以利用其进行快速的Windows应用程序开发,设计出图形界面丰富的功能软件,但是在编写矩阵运算时缺少专业的数据类型变量,当编写复杂的算法时不免要消耗大量的编程时间[1][2]。   比较两者的优缺点后不难发现,Matlab易于使用但是在仿真时程序运行效率低[3],实时性较差,使用条件有限,VC++不便于直接进行矩阵计算但是代码运行效率高,实时性较好,应用范围广,也就是说,如果通过混合编程能让两者的优势互补,在工作中将大大减少在算法编程方面的工作量,并且能够改善仿真程序代码的运行效率以及实时性,为科研工作和工程开发提供更强大的技术支持。   二、混合编程方法简介   目前VC++与Matlab相结合的混合编程主要有以下几种方法[4]:   1.在VC++中调用Matlab引擎(Engine)   这种处理方法不要求链接整个Matlab,只需嵌入必要的Matlab引擎库,节省了大量的系统资源,使应用程序整体性能更好,处理效率更高,但这种混合编程的方法需要Matlab在后台适时运行不能脱离Matlab环境,严重影响了程序的通用性,因此这种方法在实际开发过程中很少采用。   2.Matlab调用由C/C++编写编译为mex文件的函数   这种方法是对Matlab函数库和一种补充,用户可以自已编写一些高效或者具有特定功能的函数,利用编译器把它们编译为mex文件,供Matlab调用,相当于添加自定义的Matlab函数。   3.在VC++中调用Matlab生成的动态链接库   这种方法通过指定的编译器,把由Matlab编写的m函数文件编译成动态链接库文件(dll)。只需在程序开发和发布中包含其生成的动态库,就可以在VC++程序中调用封装好的Matlab函数,实现数值算法的运用。这种方法可以使程序脱离Matlab运行环境,减少文件外部存储空间的占有量,并实现了代码共享。   4.使用COM组件对象模型技术实现混合编程   COM技术是一种应用广泛、方便灵活的方法,是利用Matlab提供的DeployTool工具实现Matlab与C/C++的混合编程。COM给软件开发人员提供了一种共享二进制代码的方法,但是由于缺乏可视化界面,其应用范围受到一定限制。   三、混合编程实例与验证   从实际应用角度考虑,前两种编程方法虽然简便,但适用范围狭窄,第四种方法适用性好于前两种方法,但需要用户掌握较高的程序设计水平,不便于科研人员使用。本文选用第三种方法进行编程,并以控制工程中经典的单级倒立摆系统的LQR线性二次型调节器的设计为例,描述这一方法的实现过程,验证其在控制系统仿真中能够带来的优势之处。   本文所采用的软件版本是VisualStudio2008和MatlabR2010a。   1.混合编程步骤   (1)Matlab编译环境的设置   控制算法从Matlab到VC++的代码转制要通过编译器来进行

文档评论(0)

gmomo-lt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档