基于COM接口的VC++与MATLAB混合编程_第1页
基于COM接口的VC++与MATLAB混合编程_第2页
基于COM接口的VC++与MATLAB混合编程_第3页
基于COM接口的VC++与MATLAB混合编程_第4页
基于COM接口的VC++与MATLAB混合编程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于COM接口的VC+与MATLAB混合编程摘要介绍了V+与atlab混合编程的各种方法,并分析了各种方法的优缺点。以FFT算法为例,给出了基于接口的V+与atlab混合编程的步骤。关键词V;atlab;FFT;混合编程目前,atlab广泛的应用于自动控制、数学运算、信号分析、图像处理、财务分析等各行各业。ATLAB也存在着某些缺点:atlab是一种解释性语言,其特点是以矩阵为根本数据构造,导致其执行效率相对或+语言要低很多;因为atlab程序不能脱离其环境运行,故不能直接用于商用软件的开发。与此相反,V+由于其丰富得人机界面,高效的执行效率已经成为基于inds平台下开发商业软件的必备工具。然

2、而,V+对于复杂的数值运算就有点“力不从心了。所以将V+与atlab完美的结合,发挥各自的优势具有现实意义。自atlab6.5版本开场,新推出来的builder支持把用atlab编写的程序做成组件,供其他语言调用。该方法实现简单,通用性强,成为V与atlab混合编程最有效的方法。1.1通过atlabEngine方式atlabEngine是指一组atlab提供的接口函数,支持语言,atlabEngine采用/S(客户机/效劳器)形式,atlab作为后台效劳器,而程序作为前台客户机,通过inds的动态控件与效劳器通信,向atlabEngine传递命令和数据信息,从atlabEngine承受数据信息

3、。用户可以在前台应用程序中调用这些接口函数,实现对atlabEngine的控制。采用这种方法几乎能利用atlab全部功能,但是需要在机器上安装atlab软件,而且执行效率低,因此在实际应用中不采用这种方法,在软件开发中也不可行,这种形式只合适个人使用或做演示。1.2直接调用atlab的/+数学函数库atlab中提供了可以供/+语言调用的/+数学函数库,其中包含了大量用/+语言重新编写的atlab数学函数,这些函数涉及到线形代数、数值分析、傅立叶变换、多项式计算、解微分方程等,并且函数库中提供了大量各种矩阵操作函数,在V中可以直接使用这些函数,通过这些函数可以在V中方便的实如今atlab中矩阵运

4、算功能。用这种方法可以很灵敏的调用atlab来编写应用程序,但要求读者对/+语言非常熟悉,并且这种形式不能包括所有的atlab函数,尤其是无法充分使用atlab提供的详尽的绘图函数。1.3用atlab自带的atlabpileratlabpiler的作用是将文件转化成/+代码也就是通常所用的命令,这种源代码需要用/+编译器编译连接成独立应用程序,在将文件转成独立应用程序的过程中生成的/+文件,原那么上是可以被其它的/+代码调用的,编译器可以通过设置命令的选项,将文件编译成动态链接库文件、/+文件、可执行文件等一系列文件。到atlabR21.1为止,atlabpiler的程序转换成/+代码功能有很

5、多限制:不能转换脚本文件,只能转换函数;不能使用atlab对象;不能用input或者eval操作atlab空间变量;不能动态地命名变量,然后用lad或者save命令来操作;不能处理具有嵌套调用其他文件的文件;不能使用ATLAB内联函数;1.4使用at工具这是第三方控件,很小(8多),本来属于athtl公司,后来被athrks公司合并了,使用该工具可以将脚本文件和函数转化成一样功能的/+文件,相比其它方法使用at具有如下优点:转换过程简单(由at工具自动实现),容易实现;可以方便的生成动态链接库文件(dll)和可执行文件(exe);不仅可以转换独立的脚本文件,也可以转换嵌套脚本文件;设置环境后,

6、可以使用atlab的工具箱函数;但at也有以下缺乏:对strut等类的支持有缺陷,对lass数据类型;局部绘图语句无法实现或得不到准确图象,尤其是三维图象;当涉及到的复杂函数调用时嵌套的文件数量很多。因此在不涉及到三维做图以及文件不大的情况下推荐使用。1.5使用atlab的builde工具是pnentbjetdule的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用它。atlab6.5新推出来的builder就是把用atlab编写的程序做成组件,供其他语言调用。该方法实现简单,通用性强,而且几乎可以使用atlab的任何函数(注意:不支持脚本文件,脚本文件使用时要改为函

7、数文件),因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,这也是atlab公司推荐的使用方法。2.1创立atlab源文件在atlab中实现FFT转换只需要一个函数即可。(1)新建文件,在文件中输入以下两条语句:FuntinFFT(X,Y)%实现FFT转换。函数名为FFT,x为输入参数,y为输出参数Y=fft(X);%fft转换实现函数(2保存为FFT.的文件。2.2在atlab下创立组建(1在atlabandind输入如下命令:tl(2出现编辑界面后,选择File-NePrjet建立新工程testfft,并将FFT.参加到新建工程中。(3点击Build-bjet生成组件。至此组件已经由

8、atlab做好,默认的保存位置为:atlab安装位置rkpnent。2.3V下调用组件(1将testfft_idl.h和testfft_idl_i.文件拷贝到V建立的工程目录下。两文件默认目录为rkpnentsr(2将目录/extern/inlude/下的types.h文件拷贝的V建立的目录下。(3将上面三个文件参加V工程:工程-添加工程-Files,选择刚刚拷到目录下的testfft_idl.h和testfft_idl_i.文件。(4)为程序添加头文件testfft_idl.h、testfft_idl_i.和types.h(5填写调用组件代码:if(FAILED(Initialize(NUL

9、L)/初始化调用AfxessageBx(unabletinitialize);Itestfft*st=NULL;HRESULThr=reatEinstane(LSID_testfft,NULL,LSTX_ALL,IID_Itestfft,(vid*)st);if(SUEEDED(hr)VARIANTx,y;VariantInit(x);VariantInit(y);x.vt=VT_I4;x.lVal=4;st-fte(x,y);/x为输入参数,y为输出参数st-Release();elseAfxessageBx(unsueed);至此实现V下调用组件实现FFT转换。理论说明用方法实现V与atlab混合编程具有实现简单、执行效率高、几乎支持所有的atlab函数、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论