为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Matlab与VC或VB的混合编程

2013-02-18 29页 ppt 642KB 21阅读

用户头像

is_327211

暂无简介

举报
Matlab与VC或VB的混合编程nullnullMatlab与VC、VB 混合编程fanfan@bbs.sjtu.edu.cn*null1 为什么要混合编程 何谓混合编程本文所讨论的混合编程指Matlab与VC,VB的混合编程null1 为什么要混合编程 为什么要采用混合编程充分发挥各种编程语言的优势Matlab的优势:1. 强大的矩阵运算功能矩阵求逆:A=inv(B) 矩阵相乘:A=B*C 奇异值分解:[U,S,V]=svd(A)null1 为什么要混合编程 为什么要采用混合编程Matlab的优势:2. 图形和数据可视化功能null1 为什么要混合编...
Matlab与VC或VB的混合编程
nullnullMatlab与VC、VB 混合编程fanfan@bbs.sjtu.edu.cn*null1 为什么要混合编程 何谓混合编程本文所讨论的混合编程指Matlab与VC,VB的混合编程null1 为什么要混合编程 为什么要采用混合编程充分发挥各种编程语言的优势Matlab的优势:1. 强大的矩阵运算功能矩阵求逆:A=inv(B) 矩阵相乘:A=B*C 奇异值分解:[U,S,V]=svd(A)null1 为什么要混合编程 为什么要采用混合编程Matlab的优势:2. 图形和数据可视化功能null1 为什么要混合编程 为什么要采用混合编程Matlab的优势:3. 众多工具箱(ToolBox)自带工具箱: 神经网络:Neural Network 信号处理:Signal Processing 小波分析:Wavelet 模糊逻辑:Fuzzy Logic 滤波器设计:Filter Design 统计:Statistics 优化:Optimization 样条函数:Spline 等。外部扩展的工具箱: 遗传算法:Genetic Algorithm 等。null1 为什么要混合编程 为什么要采用混合编程Matlab的优势:4. 开放的源代码除了少数内建函数外,绝大部分函数以m文件形式给出 适合于用户扩展,根据自己的需要修改源代码null1 为什么要混合编程 为什么要采用混合编程Matlab的劣势:m文件无法脱离Matlab环境运行 解释性的语言,运算速度慢 界面开发繁琐,不够友好 开放的源代码不利于知识产权的保护null1 为什么要混合编程 为什么要采用混合编程VC,VB的优势:容易开发友好的界面 代码效率高 能直接与系统及底层硬件交换数据,等。VC,VB的劣势:数值计算 数据可视化null2 混合编程的不同途径 引擎方式VC中调用Matlab的计算引擎 通过engOpen( ), engClose( ), engGetArray, engPutArray( ), engEvalString( )等函数优点:简单实用 缺点:无法脱离Matlab的支持null2 混合编程的不同途径 MEX方式MEX文件(windows操作系统下扩展名为dll): 按照一定格式,由C或者Fortran语言编写的由Matlab解释器自动调用并执行的动态连接文件优点: 可以利用一些已完成的C或者Fortran的算法 效率较高 可以利用MEX文件实现对硬件编程 可以隐藏源代码和算法缺点:离不开Matlabnull2 混合编程的不同途径 mcc方式mcc命令激活Matlab Complier,将m文件编译成c或者c++语言 根据mcc命令的不同参数,可以有不同的编译结果。1. m文件编译成c或者c++文件,然后在VC中调用2. m文件编译成动态连接库(dll)文件,然后在VC中调用null2 混合编程的不同途径 mcc方式mcc方式的优缺点: 繁琐,容易出错 不推荐将m文件编译成c或者c++,然后在vc中调用 推荐dll,add-in或者COM Builder形式null2 混合编程的不同途径 Matlab add-in方式首先在Matlab环境中通过命令设置,VC中就会出现新建Matlab工程的选项和Add-in的工具条null2 混合编程的不同途径 Matlab add-in方式null2 混合编程的不同途径 Matlab add-in方式add-in的方式本质上是mcc编译m文件为c或者c++,然后加入到VC工程中,只不过这一过程被自动化而已。 一般不修改编译成的c或者c++文件,而修改m文件,然后再编译。null2 混合编程的不同途径 COM Builder方式从Matlab6.5开始,出现了COM Buildernull2 混合编程的不同途径 COM Builder方式COM Builder把m文件编译为COM对象特点:可以添加属性,方法,事件等。null2 混合编程的不同途径 其他辅助工具Matcom: MathTools(已被MathWorks公司收购)公司的产品 MatrixVB MathWorks公司的一个产品 本质上是一个COM库,提供了很多Matlab中的矩阵函数和图形功能 其一个突出的特点是实现了在指定的Windows窗口上绘图,但是效果不佳null2 混合编程的不同途径 其他辅助工具MatrixVB的例子null2 混合编程的不同途径 通过MAT文件MAT文件是Matlab自己的一种存储数据的方式 Matlab External Interfaces/API 中提供了MAT文件的组织格式,可以在c语言中读取MAT文件。通过MAT文件,甚至txt文件也是一种广义上的混合编程null2 混合编程的不同途径 c/c++ Math libraryMatlab6.5中,这一部分被合并到Complier里面,参考具体的函数,最好通过Matlab6.1的帮助值得注意的是,其他方式的混合编程在直接使用时,都要涉及到c/c++math library部分。主要用来进行数据类型的转换。c/c++ Math library提供了400多个数学函数,其中包括接口,数据类型的转换,矩阵操作和计算等。null2 目前混合编程的一些局限 Matlab Complier的局限目前一些Matlab函数还不支持编译,如 keyboard,type,java,pack,等2. 一些函数的适用收到一定的限制,如 load函数中不能用动态的变量名;不能用eval和input函数操作workspace中的变量,等。3. 涉及到Object或者JAVA界面的m文件无法编译4. 其他的一些限制,如一些工具箱的不能被编译null2 目前混合编程的一些局限 图形显示方面的不足除了使用MatrixVB,目前还没有办法把Matlab的图形画在指定的窗口上,而MatrixVB方式效果不佳,功能也很有限。有网友提出如下思路: 通过API函数,找到Matlab的Figure,然后把Figure窗口作为指定Windows窗口的子窗口。再通过其他的一些技巧,使结果看起来好像画在Windows窗口上一样。null2 目前混合编程的一些局限 图形显示方面的不足实例null2 目前混合编程的一些局限 程序发布的繁琐和不稳定Matlab自带了发布工具:mglinstaller.exe。其中包含了发布程序运行时所需要的一些动态连接库文件。 当然,如果发布的程序中涉及到自己编译的dll或者COM,则也需要附带相应的文件Matlab add-in的发布打包工具发布的程序运行不稳定,调试繁琐null3 混合编程展望 新的Matlab版本的新功能新版本的Complier有望能增加更多的功能,减少各种限制新版本的Matlab有望提供生成ActiveX的功能有网友提出利用Matlab runtime server进行混合编程 目前国内用这种方式的还不多null4 推荐参考文献 Matlab helpComplier COM Builder c/c++ math library c/c++ Graphics library null4 推荐参考文献 其他资源中国期刊网 饮水思源BBS,MathTools版 水木清华BBS,MathTools版,等 《Matlab应用程序接口用户指南》,刘志俭等编著,科学出版社 ftp://202.120.10.130/pub/MathToolsnull谢谢大家!希望能与大家多多交流!
/
本文档为【Matlab与VC或VB的混合编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索