上一篇:COM组件设计与应用之.NET中用ATL写组件 >>
MATCOM在VC++与MATLAB混合编程中的应用
| 天极软件专题专区精选 到天极软件“读编交流区”畅所欲言 | |||
| Google专区 | POPO专区 | QQ专区 QQ挂机 | 了解Web2.0 |
| Flash MX 视频教程 | Photoshop视频教程 | 网页设计视频教程 | 照片处理数字暗房 |
| PPT动画演示教程 | Excel动画教程集 | Word动画演示教程 | Windows Vista专区 |
| 特洛伊木马专区 | 黑客知识教程专区 | 防火墙应用专区 | 注册表应用专区 |
| Windows API开发专区 | 网络编程专区 | VB数据库编程专区 | 图像处理与多媒体编程 |
摘要:介绍了使用MATCOM实现VC++与MATLAB混合编程的优势和方法,并给出了实例。
关键词:MATCOM、MATLAB、混合编程
引言
MATLAB是MathWorks公司于1982年推出的一种以矩阵为基本运算单位的高效数值计算软件,带有功能强大的数学函数库,并开发有多种学科领域的工具箱函数库,广泛地应用于科学研究与工程计算。然而,MATLAB自身存在的一些缺点限制了它在更多方面的应用:
(1)MATLAB程序不能脱离其运行环境,可移植性差
(2)MATLAB是一种解释性语言,语言执行效率低,实时性较差
(3)MATLAB的界面开发能力较差,难以开发出友好的应用界面
(4)MATLAB编写的M文件是文本文件,容易被直接读取,难以保护劳动者的成果
VC++用于面向对象的可视化编程,可以完成从底层软件直到面向用户软件等各种应用程序的开发。利用它提供的各种实用工具,开发者可以轻松开发出高效强大的Windows应用程序。但在实际工程开发中,与MATLAB相比:
(1) VC++在数值处理分析和算法工具等方面不如MATLAB
(2) VC++在准确方便地绘制数据图形(数据可视化)方面不如MATLAB
因此,把MATLAB在数值计算、算法设计以及数据可视化等领域的优势与VC++应用系统集成,不仅可以完全满足系统在数据运算与表现方面的需求,而且还可提高系统处理的效率和稳定性,同时也减少了开发人员实现算法的困难,缩短了软件开发的周期,提高了软件质量,在实践中具有很高的使用价值。
VC++与MATLAB混合编程方法
在VC++下调用MATLAB,主要有以下三种方法:
1) 利用MATLAB引擎
MATLAB Engine库是MathWorks公司提供的一组函数库,它提供了一种在用户程序进程中与独立的MATLAB进程通讯的方法,在Windows下使用ActiveX技术实现。
MATLAB Engine不仅可以调用MATLAB中的C\C++函数,还可以调用工具箱中的函数,应用程序整体性能较好,同时,MATLAB Engine方式可利用MATLAB强大的图形功能;但该种方式的致命缺陷是不能脱离MATLAB运行环境。
2) 利用MATLAB自带编译器MCC
从MATLAB 5.1版本开始,MathWorks公司推出了一系列的MATLAB自带编译器来解决MATLAB与C++的接口问题。编译器MCC可以将MATLAB的C/C++数学库编译为VC++编译器能识别的代码嵌入VC++环境。
利用MCC编译器,可以有效提高代码的执行效率,而且可以脱离MATLAB运行环境;但待编译的M文件不能涉及MATLAB的内部类,出现编译文件嵌套时应改写M文件,而且此种方式不支持图形功能。
3) MATCOM转化法
MATCOM是MathWorks公司开发的为MATLAB中的M文件进行高效解释和调试的集成开发环境。MATCOM编译M文件,先将M文件按照与MATCOM的cpp库的对应关系,翻译为cpp源代码,然后用C编译器将cpp文件编译成相应的exe或dll文件。
用MATCOM方式,生成的代码可读性好,支持图形函数,支持M文件编译过程中的文件嵌套情况,可脱离MATLAB环境;缺陷为待编译的M文件不能涉及MATLAB的内部类。
综合考虑上述三种结合方式,MATCOM转化法最为简便有效,笔者认为是实现VC++与MATLAB混合编程的最佳途径。
MATCOM转化法
以下介绍均以MATLAB 6.5、MATCOM 4.5、VC++ 6.0和Windows XP为例进行说明。
MATLAB包括数学函数和工具箱函数,MATCOM已经将一般数学函数进行编译,可以遵循MATCOM语言规则直接在VC++中使用;要使用工具箱函数,则需要在MATCOM下编译MATLAB的M文件。如图1所示。
|
图1 MATCOM转换法示意图 |
1、只使用MATLAB一般数学函数
将Windows中的系统文件v4501v.dll与ago4501.dll以及MATCOM中的文件matlib.h与v4501.lib加入VC++工程目录,然后在程序中包含文件matlib.h和链接文件v4501.lib。安装MATCOM后,会在安装路径上自动生成文件refguide.pdf,其中所列的函数均可在VC++中直接使用。
2、使用MATLAB数学函数和工具箱函数
当所需函数不在refguide.pdf中时,在完成上面步骤后,可利用MATCOM将所需函数的M文件转换为cpp文件或dll文件后加入VC++工程使用。MATCOM使用简单,在此就不仔细陈述转换过程了。特别需要提出的是,在转换过程中若有M文件嵌套情况出现,所有M文件应在同一目录下。
应用实例
下面以VC++下调用MATLAB随机函数、噪声函数、通信工具箱中数字调制和解调函数为例,说明MATCOM在工程开发中的应用。
(1)使用MATCOM将MATLAB中随机函数randint、噪声函数awgn、数字调制函数dmod和解调函数ddemod的M文件转化为VC++的h文件和cpp文件。
(2) 建立VC++工程,将所需文件加入工程。
(3) 遵循MATCOM语言格式,使用随机函数产生随机二元序列,经数字调制后加噪声,再经数字解调函数解调出二元序列。
图2为此VC++程序运行时的界面(单色处理后):
|
图2 VC++仿真程序运行界面 |
结束语
使用MATCOM实现MATLAB和VC++的混合编程,是开发数据处理应用软件的有效途径。此种方法的优势主要如下:
(1) 提供了MATLAB中的大量成熟函数 。
(2) 充分发挥出MATLAB强大的数据可视化功能。
(3) 发挥出强大开发工具VC++的Windows平台优势。
(4) 程序可脱离MATLAB运行环境。
综上所述,MATCOM转换法最大限度地利用了上述各种软件的特长,将高难度的算法研究与实际应用结合在一起,达到了程序简洁、编程效率提高和算法更易实现的目的。在开发过程中,已有编程经验的研究人员,只要熟悉MATLAB的函数调用、语法格式,就可以通过调用函数快速地解决问题,不必花费大量的时间与精力研究具体的算法,而是更专注于专业方面的研究。
下一篇:COM组件设计与应用之实现多接口 >>
相关文章:
- · Visual C#构建网络计算机树形图
- · C# 3.0 新特性:扩展方法初探
- · Visual Studio2005改变软件教育模式
- · Visual C#中编写多线程程序之起步
- · Visual C#实现文件分割合并器
- · 基于.NET的多线程编程入门
- · 体验Java 5.0的新增语言特性
- · 漫谈Java程序的性能优化
- · 专访Java之父:Java是否能够与时俱进
- · 基于Java的Google地图跻身手机屏幕
- · James Gosling预言Java:手机将一统桌面
- · 美杂志评25件最糟糕IT产品 Win2000上榜
- · Java初学者都必须理解的六大问题
- · 两种特殊的Java容器类List和Set分析
- · 06年搜索市场十五大趋势 Google唱主角
- · Delphi实现动态修改显示器分辨率
- · 更改IE下载文件后的默认处理方法
- · 网管必备的智能监控软件:网络执法官
- · 用Delphi设计循环播放声音文件程序
- · Delphi编程禁止用户关闭操作系统
- · PHP 5.0 中的对象重载技术研究
- · 美政府黑客大会寻人才 培养黑客界线人
- · 腾讯RTX能带给企业客户的价值
- · 腾讯RTX提供给用户的主要解决方案
- · 腾讯RTX的主要功能特性介绍
- · MM购物人人埋单 人人网重金搜寻品味美女
- · 是猫友就要有猫窝!猫扑我的空间试用小记
- · UUME引领网络视频娱乐狂潮
- · 让我们停止这场战争
- · 一个“小圈子”,聚拢大家庭
- · 个人博客盈利并不难 要根据特点选对广告
- · 猫扑网友热心公益 齐力捐助善良老人
- · 猫扑网友自拍漫画玩火世界杯
- · 美少女足球队让你High到爽
- · 激情盛夏 趋势科技送大礼
- · 把软件当硬件卖 趋势给中国市场的独创方案
- · 我的媒体中心—“猫仔队1.7”新鲜登场
- · 猫扑音乐随身听,保护数字音乐版权有新招
