基于MATCOM的VC++与MATLAB集成应用研究

2014-08-15 20:39衡霞张丽丽
科技视界 2014年17期

衡霞 张丽丽

【摘 要】本文论述了MATLAB与VC++集成应用的特点和意义,介绍了目前常用的三种集成方法:利用MATLAB引擎、利用MATLAB自身的编译器和利用MATCOM调用工具箱中的函数;通过在VC++环境下对声音文件进行低通滤波处理的实例应用,说明了基于MATCOM集成开发方法的优势。

【关键词】Visual C++;MATLAB;MATCOM;集成应用

【Abstract】This paper describes the character and significance of integrated application of Visual C++ and MATLAB, introduces the three corresponding methods: based on MATLAB Engine, based on MATLAB C++ Complier and based on MATCOM to use function in the MATLAB toolbox. Finally the application of audio lowpass to demonstrates that the third method has greater advantages over others.

【Key words】Visual C++; MATLAB; MATCOM; Integrated Application

0 引言

MATLAB是一种基于矩阵运算、具有强大的数值运算和数据处理功能的高级编程语言,广泛应用于信号分析、语音分析、优化设计等领域。它的突出特点具有丰富的函数资源供用户直接调用,且其绘图功能强大,生成的图形可实现多种功能,如图形缩放、旋转、坐标轴标注、曲线说明等;并在复杂算法方面表现出其他语言难以比拟的优势;目前已成为国际上较流行的软件之一。但是,作为一种以解释方式运行的语言,MATLAB程序执行效率较低、耗时较长,又受其平台限制,MATLAB程序不能脱离MATLAB环境运行,这就给其广泛开发使用带来很大的不便。为了提高程序的执行效率,开发出独立可执行程序,现在普遍使用的一种方法就是用VC++调用MATLAB。

1 VC++与MATLAB的混合编程方法

目前,VC++与MATLAB的混合编程主要有以下三种方法:

1.1 利用MATLAB引擎

MATLAB引擎采用客户和服务器计算方式,在运用中,VC下的C或C++程序作为前端客户机,它向MATLAB引擎传递命令、数据信息,并从MATLAB引擎接收数据信息。它提供以下几个函数:engOpen、engGetArray、engPutArray、engOutput Buffer、engClose、engEvaString。

1.2 利用MATLAB自身的编译器调用工具箱中的函数

MATLAB 5.1版本之后自带有C++ Complier-mcc,该编译器可将MATLAB的程序文件(M文件)转换为C或C++的源代码,并可生成脱离MATLAB运行环境的可执行程序。但要求编译的M文件不依赖于其他M文件,以及不能调用MATLAB工具箱中的函数;同时,mcc编译器也不支持图形函数。

1.3 利用MATCOM调用工具箱中的函数

MATCOM是Mattools公司推出的世界上第一个由MATLAB到C++的编译开发软件平台,提供对MATLAB的 M文件的解释执行和开发环境支持。MATCOM编译M文件,先将M文件按照与MATCOM的cpp库的对应关系翻译成cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件。既保持了MATLAB的优良算法,又保持了C++的高执行效率,MATCOM软件平台本身的功能相当强大,提供近千个MATLAB的基本功能函数,通过必要的设置,就可以直接实现与C++的混合编程,而不必再依赖MATLAB。

利用MATCOM调用工具箱中的函数与前两种方法比较,它的转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快1.5倍以上;同时MATCOM不仅可转换独立的不依赖于其他M文件的M文件,还可转换调用其它M文件的M文件嵌套,条件是这些M文件在同一个目录下。

2 集成应用系统开发方法

下面以一个MATLAB对声音文件的低通滤波程序为例,介绍通过MATCOM4.5实现VC++ 6.0对MATLAB程序的调用:

2.1 MATCOM对MATLAB源代码的编译

如上代码所示,在调用Matrix之前要用”initM(MATCOM _VERSION);”函数来初始化类库调用,相对应的调用结束用”exitM();”函数来结束类库调用。initM(MATCOM_VERSION)函数中的参数MATCOM_VERSION是一个在在matlib.h中已定义的常量,它保证了动态链接库与matlib.h相匹配,从而它可以多次调用。

3 小结

通过MATCOM的支持,采用MATLAB与Visual C++ 6.0集成应用混合编程可充分将MATLAB的高效数值计算和集科学计算、信号处理、神经网络、图象处理等于一体的高度集成系统特性和Visual C++程序执行速度快、实时性好的特点有效地结合,大大提高了系统的开发效率与运行效率。用MATCOM在Visual C++环境中直接进行这种集成调用,它比其他的调用方式使用简单并且功能强大,可以很好地解决工程中遇到的许多问题,具有一定的实用和推广价值。

【参考文献】

[1]王刚,俞颖.VC++与MATLAB混合编程环境下语音增强算法实现[J].软件导刊,2012(12):49-51.

[2]吕永林,字正华.基于VC 与MATLAB 的声目标识别系统设计[J].计算机技术与发展,2009,19(9):207-210.

[3]刘宁,刘财,冯晅.基于MATCOM平台的VC++与MATLAB混合编程地震正演模拟[J].世界地质,2011(4):655-659.

[4]刘维.精通MATLAB与C/C++混合程序设计[M].2版.北京:北京航空航天大学出版社,2008.

[5]袁林,巴力登.VC++调用MATLAB实现图像处理[J].计算机技术与发展,200717(8):215-218.

[6]张德丰.MATLAB 与外部程序接口编程[M].北京:机械工业出版社,2009:292-294.

[7]易克初,田斌,付强.语音信号处理[M].北京:国防工业出版社,2000.

[8]Won-Gyum Kim, Jong Chan Lee and Won Don Lee. An audio watermarking scheme with hidden signatures. International Conference on Signal Processing, Beijing, 2000: 250-253.

[责任编辑:杨玉洁]

【摘 要】本文论述了MATLAB与VC++集成应用的特点和意义,介绍了目前常用的三种集成方法:利用MATLAB引擎、利用MATLAB自身的编译器和利用MATCOM调用工具箱中的函数;通过在VC++环境下对声音文件进行低通滤波处理的实例应用,说明了基于MATCOM集成开发方法的优势。

【关键词】Visual C++;MATLAB;MATCOM;集成应用

【Abstract】This paper describes the character and significance of integrated application of Visual C++ and MATLAB, introduces the three corresponding methods: based on MATLAB Engine, based on MATLAB C++ Complier and based on MATCOM to use function in the MATLAB toolbox. Finally the application of audio lowpass to demonstrates that the third method has greater advantages over others.

【Key words】Visual C++; MATLAB; MATCOM; Integrated Application

0 引言

MATLAB是一种基于矩阵运算、具有强大的数值运算和数据处理功能的高级编程语言,广泛应用于信号分析、语音分析、优化设计等领域。它的突出特点具有丰富的函数资源供用户直接调用,且其绘图功能强大,生成的图形可实现多种功能,如图形缩放、旋转、坐标轴标注、曲线说明等;并在复杂算法方面表现出其他语言难以比拟的优势;目前已成为国际上较流行的软件之一。但是,作为一种以解释方式运行的语言,MATLAB程序执行效率较低、耗时较长,又受其平台限制,MATLAB程序不能脱离MATLAB环境运行,这就给其广泛开发使用带来很大的不便。为了提高程序的执行效率,开发出独立可执行程序,现在普遍使用的一种方法就是用VC++调用MATLAB。

1 VC++与MATLAB的混合编程方法

目前,VC++与MATLAB的混合编程主要有以下三种方法:

1.1 利用MATLAB引擎

MATLAB引擎采用客户和服务器计算方式,在运用中,VC下的C或C++程序作为前端客户机,它向MATLAB引擎传递命令、数据信息,并从MATLAB引擎接收数据信息。它提供以下几个函数:engOpen、engGetArray、engPutArray、engOutput Buffer、engClose、engEvaString。

1.2 利用MATLAB自身的编译器调用工具箱中的函数

MATLAB 5.1版本之后自带有C++ Complier-mcc,该编译器可将MATLAB的程序文件(M文件)转换为C或C++的源代码,并可生成脱离MATLAB运行环境的可执行程序。但要求编译的M文件不依赖于其他M文件,以及不能调用MATLAB工具箱中的函数;同时,mcc编译器也不支持图形函数。

1.3 利用MATCOM调用工具箱中的函数

MATCOM是Mattools公司推出的世界上第一个由MATLAB到C++的编译开发软件平台,提供对MATLAB的 M文件的解释执行和开发环境支持。MATCOM编译M文件,先将M文件按照与MATCOM的cpp库的对应关系翻译成cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件。既保持了MATLAB的优良算法,又保持了C++的高执行效率,MATCOM软件平台本身的功能相当强大,提供近千个MATLAB的基本功能函数,通过必要的设置,就可以直接实现与C++的混合编程,而不必再依赖MATLAB。

利用MATCOM调用工具箱中的函数与前两种方法比较,它的转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快1.5倍以上;同时MATCOM不仅可转换独立的不依赖于其他M文件的M文件,还可转换调用其它M文件的M文件嵌套,条件是这些M文件在同一个目录下。

2 集成应用系统开发方法

下面以一个MATLAB对声音文件的低通滤波程序为例,介绍通过MATCOM4.5实现VC++ 6.0对MATLAB程序的调用:

2.1 MATCOM对MATLAB源代码的编译

如上代码所示,在调用Matrix之前要用”initM(MATCOM _VERSION);”函数来初始化类库调用,相对应的调用结束用”exitM();”函数来结束类库调用。initM(MATCOM_VERSION)函数中的参数MATCOM_VERSION是一个在在matlib.h中已定义的常量,它保证了动态链接库与matlib.h相匹配,从而它可以多次调用。

3 小结

通过MATCOM的支持,采用MATLAB与Visual C++ 6.0集成应用混合编程可充分将MATLAB的高效数值计算和集科学计算、信号处理、神经网络、图象处理等于一体的高度集成系统特性和Visual C++程序执行速度快、实时性好的特点有效地结合,大大提高了系统的开发效率与运行效率。用MATCOM在Visual C++环境中直接进行这种集成调用,它比其他的调用方式使用简单并且功能强大,可以很好地解决工程中遇到的许多问题,具有一定的实用和推广价值。

【参考文献】

[1]王刚,俞颖.VC++与MATLAB混合编程环境下语音增强算法实现[J].软件导刊,2012(12):49-51.

[2]吕永林,字正华.基于VC 与MATLAB 的声目标识别系统设计[J].计算机技术与发展,2009,19(9):207-210.

[3]刘宁,刘财,冯晅.基于MATCOM平台的VC++与MATLAB混合编程地震正演模拟[J].世界地质,2011(4):655-659.

[4]刘维.精通MATLAB与C/C++混合程序设计[M].2版.北京:北京航空航天大学出版社,2008.

[5]袁林,巴力登.VC++调用MATLAB实现图像处理[J].计算机技术与发展,200717(8):215-218.

[6]张德丰.MATLAB 与外部程序接口编程[M].北京:机械工业出版社,2009:292-294.

[7]易克初,田斌,付强.语音信号处理[M].北京:国防工业出版社,2000.

[8]Won-Gyum Kim, Jong Chan Lee and Won Don Lee. An audio watermarking scheme with hidden signatures. International Conference on Signal Processing, Beijing, 2000: 250-253.

[责任编辑:杨玉洁]

【摘 要】本文论述了MATLAB与VC++集成应用的特点和意义,介绍了目前常用的三种集成方法:利用MATLAB引擎、利用MATLAB自身的编译器和利用MATCOM调用工具箱中的函数;通过在VC++环境下对声音文件进行低通滤波处理的实例应用,说明了基于MATCOM集成开发方法的优势。

【关键词】Visual C++;MATLAB;MATCOM;集成应用

【Abstract】This paper describes the character and significance of integrated application of Visual C++ and MATLAB, introduces the three corresponding methods: based on MATLAB Engine, based on MATLAB C++ Complier and based on MATCOM to use function in the MATLAB toolbox. Finally the application of audio lowpass to demonstrates that the third method has greater advantages over others.

【Key words】Visual C++; MATLAB; MATCOM; Integrated Application

0 引言

MATLAB是一种基于矩阵运算、具有强大的数值运算和数据处理功能的高级编程语言,广泛应用于信号分析、语音分析、优化设计等领域。它的突出特点具有丰富的函数资源供用户直接调用,且其绘图功能强大,生成的图形可实现多种功能,如图形缩放、旋转、坐标轴标注、曲线说明等;并在复杂算法方面表现出其他语言难以比拟的优势;目前已成为国际上较流行的软件之一。但是,作为一种以解释方式运行的语言,MATLAB程序执行效率较低、耗时较长,又受其平台限制,MATLAB程序不能脱离MATLAB环境运行,这就给其广泛开发使用带来很大的不便。为了提高程序的执行效率,开发出独立可执行程序,现在普遍使用的一种方法就是用VC++调用MATLAB。

1 VC++与MATLAB的混合编程方法

目前,VC++与MATLAB的混合编程主要有以下三种方法:

1.1 利用MATLAB引擎

MATLAB引擎采用客户和服务器计算方式,在运用中,VC下的C或C++程序作为前端客户机,它向MATLAB引擎传递命令、数据信息,并从MATLAB引擎接收数据信息。它提供以下几个函数:engOpen、engGetArray、engPutArray、engOutput Buffer、engClose、engEvaString。

1.2 利用MATLAB自身的编译器调用工具箱中的函数

MATLAB 5.1版本之后自带有C++ Complier-mcc,该编译器可将MATLAB的程序文件(M文件)转换为C或C++的源代码,并可生成脱离MATLAB运行环境的可执行程序。但要求编译的M文件不依赖于其他M文件,以及不能调用MATLAB工具箱中的函数;同时,mcc编译器也不支持图形函数。

1.3 利用MATCOM调用工具箱中的函数

MATCOM是Mattools公司推出的世界上第一个由MATLAB到C++的编译开发软件平台,提供对MATLAB的 M文件的解释执行和开发环境支持。MATCOM编译M文件,先将M文件按照与MATCOM的cpp库的对应关系翻译成cpp源代码,然后用对应版本的c编译器将cpp文件编译成相应的exe或dll文件。既保持了MATLAB的优良算法,又保持了C++的高执行效率,MATCOM软件平台本身的功能相当强大,提供近千个MATLAB的基本功能函数,通过必要的设置,就可以直接实现与C++的混合编程,而不必再依赖MATLAB。

利用MATCOM调用工具箱中的函数与前两种方法比较,它的转换非常方便,生成的代码可读性很好,支持图形函数,且代码执行的速度比不转换平均要快1.5倍以上;同时MATCOM不仅可转换独立的不依赖于其他M文件的M文件,还可转换调用其它M文件的M文件嵌套,条件是这些M文件在同一个目录下。

2 集成应用系统开发方法

下面以一个MATLAB对声音文件的低通滤波程序为例,介绍通过MATCOM4.5实现VC++ 6.0对MATLAB程序的调用:

2.1 MATCOM对MATLAB源代码的编译

如上代码所示,在调用Matrix之前要用”initM(MATCOM _VERSION);”函数来初始化类库调用,相对应的调用结束用”exitM();”函数来结束类库调用。initM(MATCOM_VERSION)函数中的参数MATCOM_VERSION是一个在在matlib.h中已定义的常量,它保证了动态链接库与matlib.h相匹配,从而它可以多次调用。

3 小结

通过MATCOM的支持,采用MATLAB与Visual C++ 6.0集成应用混合编程可充分将MATLAB的高效数值计算和集科学计算、信号处理、神经网络、图象处理等于一体的高度集成系统特性和Visual C++程序执行速度快、实时性好的特点有效地结合,大大提高了系统的开发效率与运行效率。用MATCOM在Visual C++环境中直接进行这种集成调用,它比其他的调用方式使用简单并且功能强大,可以很好地解决工程中遇到的许多问题,具有一定的实用和推广价值。

【参考文献】

[1]王刚,俞颖.VC++与MATLAB混合编程环境下语音增强算法实现[J].软件导刊,2012(12):49-51.

[2]吕永林,字正华.基于VC 与MATLAB 的声目标识别系统设计[J].计算机技术与发展,2009,19(9):207-210.

[3]刘宁,刘财,冯晅.基于MATCOM平台的VC++与MATLAB混合编程地震正演模拟[J].世界地质,2011(4):655-659.

[4]刘维.精通MATLAB与C/C++混合程序设计[M].2版.北京:北京航空航天大学出版社,2008.

[5]袁林,巴力登.VC++调用MATLAB实现图像处理[J].计算机技术与发展,200717(8):215-218.

[6]张德丰.MATLAB 与外部程序接口编程[M].北京:机械工业出版社,2009:292-294.

[7]易克初,田斌,付强.语音信号处理[M].北京:国防工业出版社,2000.

[8]Won-Gyum Kim, Jong Chan Lee and Won Don Lee. An audio watermarking scheme with hidden signatures. International Conference on Signal Processing, Beijing, 2000: 250-253.

[责任编辑:杨玉洁]