预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据 MATLAB与VC++混合编程在系统仿真中的应用陶桂宝,郭少波MATLAB与Vc++混合编程接口接口和可以脱离MATLAB环境运行的独立应用程序口:MEx文件、engine应用程序和MAT文件。由于MATc0M工具条,使用Add—in,这第30卷第7期2007年7月重庆大学学报(自然科学版)University(NaturalEdition)文章编号:1000—582x(2007)07—0026—04摘要:通过讨论MATLAB与VC++之间的接口方案,介绍了MATCOM与MATLAB的m文件的链接方式以及MATc0M的使用方法和技巧,以单自由度振动系统为对象,通过对有阻尼状态下的振动模型的分析,对仿真算法进行了混合编程。仿真结果表明:系统仿真的执行速度得到了提高。关键词:系统仿真;MATLAB;Vc++;单自由度振动;阻尼中图分类号:TP311.1;TP391.9文献标志码:AMATLAB是美国MATHwORKS公司自20世纪80年代中期推出的数学软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,是建立在向量数组和矩阵的基础上,具有简洁的人机界面、丰富的图形用户界面GuI开发功能和极高的编程效率的数学工具,受到越来越广泛的重视和应用,但是这些功能只能在它本身所提供的平台上使用,且具有代码执行速度慢、安全保密性差的特点uj。VC++是Microsoft推出的可视化编程环境,它是目前综合性最高、最强大、也是最复杂的软件开发工具之一,应用极为广泛,在工程计算方面和MATLAB相比,编程就显得复杂得多呤j。把两者相结合,无疑是一种有效的编程方法,将给应用程序系统本身及其开发带来很好的改善。通过混合编程,可以大大提高代码的执行速度以及安全保密性。本文介绍Vc调用MATLAB的主要方案,并就单自由度振动系统,采用了混合编程方式,在脱离MATLAB环境条件下实现Vc++对m文件调用,从而在VC环境下实现系统振动仿真的方案¨1。根据MATLAB是否运行,一般将MATLAB与Vc接口分为2大类:需MATLAB在后台运行的混合编程接口[4I。第1类,需MATLAB在后台运行的混合编程接Vc的内存管理及类库函数比c更加灵活方便,因此,对这3种接口方式在Vc中的实现,主要基于内存管理和类库函数应用方面。第2类,可以脱离MATLAB环境运行的独立应用程序接口Mcc和MATc0M编译器。Mcc是MAT—LAB中经过优化的编译器。使用Mcc,用户可将MATLAB数学库、图形库和界面的MATLAB程序转化为独立于MATIAB的ExE应用程序和DLL动态链接库。MATCOM是MATHwORKS公司推出的第一个由MATLAB到c++的编译开发软件平台,其最后版本为MATcoM4.5,其集成调试编译环境为MIDEVA。通过MATcOM连接MATLAB的m文件有以下3种方法:1)经过简单设置后,由MIDEVA将m源文件转化为C/C++,然后添加到MSVC工程中。2)由MIDEVA直接生成ExE文件,然后在VC中通过shell调用。这种方法简单方便,但运行时出现一个控制台窗口,而且由于VC和MATLAB之间不能交互,通用性差,仅适用于VC调用MATLAB实现图形显示的场合。3)通过Visual种方法提供了一个MATLAB和VC直接集合的途径,而且可以快速集成m文件到Vc工程中创建独立的Joumal(重庆大学机械工程学院,重庆400030)1收稿日期:2007一03一14基金项目:重庆市自然科学基金资助项目(csTs,2006BB3015)。作者简介:陶桂宝(1967.),男,重庆大学副教授,博士,主要从事机电一体化、汽车电子、网络化制造等方面的研究,(E—mail)曲tao@cqu.edu.cn^ofChongqingScienceV01.30No.7Jul.2007 万方数据 2∞。舸’石=e一“(cle丹+c2e一丹),2未2磊丢及cc‘=2砌。,有8詈。也就是令去=2n,告=∞:,c。=2m∞。=2m√告=2五m,9:arctanf塑型!二尘1。戈、=Ae一∥sin(以=乙,。£+妒),、z=Ae一∥[6cos以=瓦∥+口sin以=乏彬】,/(%+占∞2并o)2+菇o∞。~/1一s2K+(占+石jl可)∞^2有阻尼单自由度自由振动系统,√3应用述,所以,MAⅡAB语言在振动仿真中体现出十分优图1所示为考虑了阻尼的单自由度振动系统茹+2n互+∞:戈=o,式中c。、c:为积分常数,由振动初始条件确定。令旦=占,称为相对阻尼系数或阻尼率。则式(3)由此可似讨论阻尼对系统的自由振动将会产生的cc,:(1一s2)茗=cle‘“石2—1’∞一+c2e”/玉1协,由于8=旦=l,n=∞。,则有3.1根据式(7)、(8)、(10)编写如下程序c/C++应用