衡霞 張麗麗
【摘 要】本文論述了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
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
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
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.
[責任編輯:楊玉潔]