如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第6卷第7期2006年4月科学技术与工程Vol.6No.7Apr.20061671-1815(2006)07-0886-04S科cienc学eTec技hnolo术gyan与dEng工ineer程ingc2006Sci.Tech.Engng6.卷C++Builder与Matlab混合编程的两种方法杜高鹏翟正军1*徐隽(西北工业大学软件学院,西安710065;dgp_2003@126.com;西北工业大学计算机学院1,西安710072)摘要详细论述了C++Builder与Matlab混合编程的两种实现方法。一是在C++Builder中使用COM技术调用Matlab数据。二是脱离Matlab环境,通过动态连接库方式实现对Matlab工具箱函数的调用。分别给出一个详细的例子。这两种方法都充分发挥了C++Builder与Matlab的优势,为科学研究和工程技术提供了更强的技术支持。关键词C++BuilderMatlabCOM组件Mediva软件平台DLL中图法分类号TP312文献标识码BMatlab是一个高度集成的系统,它把数值计算1C++Builder与Matlab混合编程的实现方法和可视化环境集成到一起,非常直观,而且提供了大量的函数,使其越来越受到人们的喜爱。它集科C++Builder与Matlab混合编程有两种实现方法。学计算、图象处理、声音处理于一体,具有极高的一种是基于Matlab环境支持,通过在C++Builder中使编程效率。近年来,Matlab已经从最初的“矩阵实验用COM技术调用Matlab数据实现;另一种则是完全室”渗透到科学与工程计算的多个领域,在自动控脱离Matlab环境,通过动态连接库方式实现对Matlab制、信号处理、神经网络、模糊逻辑、小波分析等多工具箱函数的调用,这可以通过一种开发平台个方向,都有着广泛的应用。BorlandC++Builder是Mediva来实现。相对来说,前者的限制因素较多,而一种新颖的可视化编程语言,它既具有C++语言的后者则较为方便灵活。灵活性、高效性,又具有可视化编程的便利性,功能1.1COM方法的实现丰富强大,界面友好,使用十分方便,但是在矩阵运COM是组件对象模型的简称,是Windows对象算、数值分析、工程计算等方面,功能则稍嫌不足;的二进制标准。为Windows提供了统一的,面向对象在工程应用中,我们一般用C++Builder语言编写应的,可扩充的通讯协议。这意味着描述一个对象的用程序,实现交互界面、数据采集和端口操作等,可执行代码(.dll或.exe文件的代码)可以被其它对象但C++Builder在数值处理分析和算法工具等方面,执行。即使两个对象使用不同语言来编写的,他们其效率远远低于Matlab语言。在准确方便地绘制数可以用COM标准来进行通信。在C++Builder中使用据图形方面,Matlab语言更具有无可比拟的优势。COM技术调用Matlab数据实现方法如下:此外,Matlab还提供功能强大的工具箱。但Matlab的(1)根据实际需要在Matlab中开发算法,写成函缺点是不能实现端口操作和实时控制。因此,若能数文件的形式(注意:不能是脚本文件,必须是函数将两者结合运用,实现优势互补,将大大提高工作文件);效率。(2)利用Matlab的COMBuilder将M函数编译为COM组件;(3)在C++Builder中调用COM组件,得到输出。2005年12月2日收到下面给出一个实例加以分析。第一作者简介:杜高鹏(1980—),男,陕西西安人,硕士研究生,研究问题:实验对象为:G(s)=1/(Js2+Bs)在Matlab中方向:计算机网络及数据库。*通讯作者简讯:翟正军,(1965—),男,教授,硕士生导师。研究方采用M函数的形式,利用ODE45求解对象方程,然后向:计算机测控与仿真。在C++Builder中进行仿真,跟踪给定信号。7期杜高鹏,等:C++Builder与Matlab混合编程两法8871)在Matlab中编写程序genzong.m和cha.m}其代码如下:双击Timer1,添加如下代码:functionb=genzong(a);void__fastcallTForm1::Timer1Timer(TObject*Sender)xk=[a(1);a(2)];{k=k+1;para=a(3);ts=a(4);tspan=[0ts];SDZ=sin(2*3.1415*k*ts);//给定信号[tt,xx]=ode45('cha',tspan,xk,[],para);doublesrc[4];doubleout[2];//传出数据数组xk=xx(length