VC与Matlab接口方法的剖析
- 格式:pdf
- 大小:250.11 KB
- 文档页数:3
摘要: 为充分发挥Matlab与VB各自的优势,将二者结合起来进行工程应用软件的开发。
本文介绍了五种VB与MATLAB混合编程接口的方法,并对各方法性能的优劣进行了比较和评价。
关键词: Matlab;Visual Basic;ActiveX;DDE;MatrixVB;DLL;COM1引言Microsoft Visual Basic是由微软公司开发的可视化编程语言之一,由于它简单易学的特点,只要稍有编程基础就可以很快掌握,可视化的用户界面设计功能,把程序设计人员从繁琐复杂的界面设计中解脱出来。
因而很快就风靡全球,是一种十分强大和有生命力的Windows 编程语言。
但是我们知道VB语言也有它的缺点,即对于数值计算方面其能力欠佳。
Matlab是Matlab 擅长处理数值计算和系统模拟仿真,已被广泛应用于数字信号处理、电力系统仿真、图像处理、系统识别等各个领域。
但是Matlab也存在一些缺点: 1、和其他高级程序相比,程序的执行速度较慢,那是因为;2、对于底层硬件操作以及编程界面方面远远比不上VB、VC 等软件。
鉴于二者各自的优势,为了提高工程软件的开发效率和质量,将两种软件结合起来进行工程应用软件的开发便成了实际的需要。
本文主要讨论VB与Matlab混合编程的几种方法。
2Vb和Matlab接口实现方法介绍2.1借助ActiveX技术ActiveX是特点就是使不同的软件对象可以跨进程、跨平台并能在网络上进行交互。
Matlab ActiveX自动化服务的功能主要包括在(1) Execute (Command as String) 方法: 执行本方法将调用MATLAB执行一条Command 字符串决定的Matlab命令,同时返回一条字符串表示命令的执行情况。
任何能在MATLAB命令行窗口执行的命令均可以被包括在Command 字符串中。
(2) GetFullMatrix方法: 该方法用来将Matlab中的一个矩阵变量传送到VB 程序的一个一维数组或二维数组中。
引言小波分析世纪80年代开始发展成熟起来的一个数学分支,其应用领域十分广泛,并逐步成为信号分析的又一有力工具。
MATLAB的小波工具箱为我们提供了小波多尺度分解函数,方便了我们对小波的使用。
但是用它所编写的软件不能脱离MATLAB编程环境在W indows平台下直接运行,代码执行效率低下,运行时占较多的系统资源,不能达到某些用户的需求。
VC++是由美国Microsoft 公司开发的可视化C/C++集成编程环境,是目前功能最强大的软件开发工具之一。
被广泛应用于Win32平台的基础应用程序的开发。
它具有强大的图形界面编程能力且代码执行效率高,可生成脱离VC++环境而独立运行的应用程序。
可是VC++在数值处理分析和算法工具等方面不如MATLAB。
本文结合VC++和MATLAB 的各自优点,以VC++图形界面作为前台框架,MAT LAB作为后台进行数值运算和数据可视化,利用组件对象模型(COM)技术作为媒介,实现了一维小波多尺度分解。
1、一维小波多尺度分解原理及其MATLAB实现1.1 一维小波多尺度分解原理以此类推,直到指定级数的多尺度小波分解为止,分解过程如图1示。
图中s为原始信号,cd1,ca1分别为分解后第1层的细节序列和近似序列,cd2,ca2分别为分解后第2层的细节序列和近似序列,以此类推。
因为这种算法分解的数据结构是塔式结构,所以这种算法也常被称为塔式算法(Pyramid Algorithm)。
1.2 一维小波多尺度分解及重构的MATLAB实现MATLAB 小波工具箱提供了以下几个实现一维小波分解和重构的函数[3]:[C,L] = WAVEDEC(X,N,’wname’),多尺度一维小波分解函数。
其中C为分解结构变量,L为个分解结构以及原始信号长度变量,X为原始信号,N为分解层度,’wna me’为小波类型。
X = WAVEREC(C,L,’wname’),多尺度一维小波重构函数。
其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。
VC++与Matlab混合编程环境下语音增强算法实现摘要:介绍了一种基于Matcom方法,在Visual C++与Matlab混合环境下实现语音增强算法编程的思路。
采用Matcom将Matlab的.M文件转化成相同功能的.CPP文件,并在Visual C++环境下将其编译成外部可执行文件直接调用。
该方法能够极大降低C++语言实现语音增强算法编程的难度,同时编写的代码能够独立于Matlab开发环境运行。
实验结果表明,基于以上方法实现语音增强算法编程简单易行,在运行速度和运算效率上都有了明显的提高,且消噪效果明显。
关键词:Visual C++;Matlab;Matcom;语音增强0引言Matlab是当今最优秀的科技应用数学软件之一,它具有强大的矩阵运算、数值计算、数据分析处理等功能,使得它在许多科学领域中成为计算机辅助设计及算法研究的基本工具和首选平台。
Matlab采用的是一种脚本语言,也就意味着它是逐行解释执行的,执行效率不是很理想,尤其在进行大规模的数值计算和分析时,Matlab有点差强人意,而且Matlab还缺乏直观优美的可视化界面。
Visual C++是一种面向对象的可视化编程语言,它是一种编译性语言,执行速度非常快,特别是在进行多层嵌套循环运算时,就更能体现其优势,在应用程序开发平台上具有得天独厚的优势。
VC++缺乏丰富的数学函数库函数、各种工程领域工具箱函数等,读取、显示图形等也不方便,这使得VC++在科学计算及工程应用领域的开发比较复杂,代价较高。
语音增强的目的是从带噪声语音信号中提取尽可能纯净的原始语音,提高输入信号的信噪比。
语音增强问题是目前国内外研究的热点问题,其算法的实现及验证过程涉及到计算仿真、绘图及大量的向量、矩阵运算和递归计算,而且数据量较大。
本文介绍了一种基于VC++与Matlab混合编程环境下实现语音增强算法的方法,采用Matcom实现语音增强算法的编程,然后将Matlab的.M文件转化成同等功能的.CPP文件,并在VC++环境下编译和直接调用。
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.