2001中国技制与决策学术年会论文集
MATLAB引擎在系统动力学仿真中的应用
周 威 常显奇
装‘各指挥技术掌院研究生队 北京 10141.)
摘 要 系统动力学仿真中,经常要解茸高阶非线性傲分方程组,并且要动态地显示水平变tI
的曲线图.为此利用MATLAB强大的计算功能来解决该问瓜,并闻述了将该功能与vc无缝
集成的方式.最后,结合其体实例说明了实现的步赚.
关.词MATL岭MATLAB’粼‘系统动力少,计算机吁
1MATLAB简介
MATLAB是以复数矩阵作为基本编程单元的一种程序设计语言,它提供了各种矩阵的
运算和操作,并具有强大的绘图功能,同时,MATLAB强大的工具库提供了许多有用的功能,
如各种优化算法、图象处理算法、线条擂值方法、微分方程组的解法、偏徽分方程组的图解法
等。利用MATLAB可以方便地设计出功能强大、稳定可靠的应用程序,以满足用户所偏的一
些功能。
MATLAB是一个高度集成的语言环境,在它的界面下可以编写程序、运行程序并跟踪调
试。但是由于MATLAB对程序编写的一些局限,使它在处理许多应用时灵活性不够,而vc
在这方面则显得极为有效。因此,有效地结合使用MATLAB和vc将能提供更为强大的编程
手段。
vc与MATLAB相结合,将为应用系统本身及其开发带来很大的改善。首先,系统的算
法棋块与其它模块分开,将提高棋块的内聚性,降低模块间的粗合性;其次,大盘数学工具包的
调用避免了程序设计中的重复性劳动,使得研究开发的周期和成本得到控制;最后,由于提供
的数学工具包都针对运算过程和结果进行了专门的优化,这将有效地提高应用系统的精确度
和毯定性.
2VC与MATLAB引攀相结合
2.1MATLAB引.
MATLAB引擎采用客户机/服务器计算方式。所谓客户机/服务器计算,就是把应用处理
负载分布到客户机和服务器上的一种计算模式。客户机与服务器既可存在于同一台计算机上,
也可通过网络来共享信息。一般情况下,客户机是运行前端软件的PC机,并且知道如何与服
务器通信;服务器与此相对应,是接收请求信息,并采取相应行动的机器。由于客户机与服务器
共同承担处理负载,使系统总体性能大为提高。
在实际应用中,vc的c语言或c+十语言的程序作为前端客户机,它向MATLAB引攀
传递命令和数据信息,并从MATLAB引攀接收数据信息。
998
襄i MATLAB引.调用函傲
函教 名 功 能
Eng0pen 打开MATLAB引攀
EngEva玛Ang 在MATLAB引苹中执行艳人的命令
EngNtArrey 将敷据放人MATLAB引攀中
Eng孙tArray 从MATLAB引尽中取出教据
EngOutPutBuffer 为MATLAB引攀抢出设备设t一个粗冲区
E-Cl.. 关团MATLAB引李
MATLAB引攀的C语言调用函数见表1,MATLAB引攀与VC的数据交换时,通过一
种专门的对象类型- MATLAB数组(mxArray)进行。这是由于MATLAB语言仅利用这一
种专门的对象类型进行各种处理,所有的MATLAB变f,无论是标f、矢f,还是矩阵、字符
串,都是利用MATLAB数组来存储。MATLAB提供C语言下的各种有效的MATLAB数组
处理函数。在MATLAB的帮助文件中,应用程序接Q中(API,ApplicationProgram
Interface)都有详细的说明和应用实例。
2.2 在VC中使用MATLAB引攀
在VC+十与MATLAB结合使用的方法中,使用MATLAB引攀主要涉及的函数及其功
能己在表1中简要列出,其函数原型如下
Engine*eng0pen(constrchar*startcmd)
intengEvalString(Engine*ep,constchar*string)
inte