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