国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MATCOM的MATLAB與VC++之間的混合編程

2012-09-12 03:22:46高秋燕
電子測試 2012年11期
關鍵詞:對話框代碼按鈕

高秋燕

(中北大學 信息與通信工程學院, 山西太原 030051)

0 引言

MATLAB是一個高效、完整的數學平臺,它是一個高度集成的語言環(huán)境,在它的界面下可以獨立編程、運行和調試,同時MATLAB本身對程序編寫也存在一些局限,使得它在很多情況下不夠靈活,運行速度不夠快。而且,用戶必需在安裝有MATLAB系統(tǒng)的機器上使用.m文件,這樣就給工程計算帶來了很大不便,在處理一些實際應用問題時顯得靈活性不足[1-2]。再就是MATLAB程序可被直接看到源代碼,因而算法和數據的保密性不好。

微軟公司開發(fā)的Visual C++具有強大的可視化集成編程環(huán)境,用它開發(fā)的系統(tǒng)具有界面友好、代碼效率高和執(zhí)行速度快等優(yōu)點,集成了功能強大的編輯器、編譯器、連接器和調試器等多種多樣的可視化編程工具,而且可以利用MFC編程漂亮的界面進行控制。是目前綜合性最高、最強大、也是最復雜的軟件開發(fā)工具之一,應用極為廣泛。因此利用MATCOM將兩者結合起來效果會很好,MATCOM與VC++具有良好的接口,只要包含必要的庫文件和頭文件即可實現(xiàn)對MATLAB的.m文件轉化,使之轉化成C++代碼,而無需運行MATLAB,來進行混合編程研究,運行速度非常快[3]。

1 MATLAB,MATCOM與VC++特點

1.1 MATLAB的特點

美國Mathworks公司開發(fā)的MATLAB已成為一個國際公認的優(yōu)秀的科技應用軟件,使用廣泛,可以實現(xiàn)數值分析、優(yōu)化、統(tǒng)計、偏微分方程數值解、自動控制、計算機仿真、數字信號處理、圖像處理等若干領域的計算和圖形顯示功能[4]。命令語句功能非常強大,包含了大量高度集成的函數可供直接調用,用戶無需具有高深的數學知識和程序設計能力,也不必深入了解算法及編程技巧,但又允許用戶自行建立指定功能的m文件,極易擴展。隨著MATLAB的廣泛使用,還出現(xiàn)了為各個領域專門使用的工具箱函數,這些工具箱的出現(xiàn)使MATLAB的功能更強大。然而,MATLAB所固有的某些缺陷,諸如解釋性語言的低執(zhí)行效率,局限于MATLAB運行環(huán)境而不利于商業(yè)開發(fā),以及源代碼的公開而不利于算法與數據的保密性等等,都限制了MATLAB的推廣應用[5]。

1.2 VC++的特性

Visual C++自從誕生以來,一直是Window環(huán)境下最主要的應用開發(fā)系統(tǒng),它是與Win32緊密相連的C++語言的集成開發(fā)環(huán)境[6]。從底層軟件直到上層直接面向用戶的軟件都可以用VC++來完成開發(fā),而且VC++強大的調試功能也為大型復雜軟件的開發(fā)提供了有效的排錯手段,可以利用MFC設計漂亮的界面,與用戶直接接觸,這種VC++開發(fā)的系統(tǒng)具有容易維護和升級、界面友好、代碼效率高、執(zhí)行速度快等一系列優(yōu)點[7]。

1.3 基于MATCOM的MATLAB和VC++的結合

MATCOM是Mathworks公司推出的由MATLAB 到C++編譯開發(fā)軟件平臺,MATCOM的集成調試編譯環(huán)境是MIDEVA,是可視化的界面。使用MATCOM編譯器可以將MATLAB源代碼譯成同等功能的C++代碼,它既保持了MATLAB的優(yōu)良算法,又提高了執(zhí)行速度[8]。而且它還支持一定的圖形顯示,生成代碼的可讀性好,其具有簡單便捷、功能強大、靈活應用的特點。在安裝MATCOM之前,必須先安裝好MATLAB和Visual C++,如果安裝成功,在VC++的開發(fā)環(huán)境的工具欄上會出現(xiàn)圖1所示的工具條。

圖1 Visual Matcom工具條

2 接口實現(xiàn)

以一個卡爾曼濾波器為例,通過MATCOM45實現(xiàn).m文件到C++代碼的轉換。

2.1 建立.m文件

啟動MIDEVA,然后打開File再打開New,新建kalman.m文件,是一個卡爾曼濾波器的程序,如圖2所示。此時將.m文件保存到matcom45Debug目錄下即可。

圖2 kalman.m文件

2.2 將.m文件轉換成C++代碼

(1)在VC中用MFC AppWizard(exe)創(chuàng)建一個基于對話框工程,工程名字為:Test,然后在對話框上添加一個按鈕,按鈕的ID為IDC_DRAW,Caption為繪圖,添加繪圖后的對話框界面如圖3所示。

圖3 添加繪圖按鈕后的對話框界面

(2)此時,點擊圖1所示的第一個按鈕,就可以對kalman.m進行m文件進行轉換。然后把kalman.cpp的內容拷貝到void CTestDlg::OnDraw()中。

(3)將 C:matcom45lib下的matlib.h和v4501v.lib文件和C:matcom45debug下的kalman.h文件拷貝到工程Test目錄下,然后在VC中將庫文件和頭文件加入到工程中:工程->添加工程->Files,選擇剛剛拷貝到Test目錄下的matlib.h、v4501v.lib和Test.h文件。轉化后生成的工程文件如圖4所示。

圖4.m文件轉換后生成的工程文件

2.3 界面如何顯示

(1)在TestDlg.cpp中加入如下代碼:#include"matlib.h" 和#include "kalman.h"

(2) 在 void CTestDlg::OnDraw()中 分 別 添加一個初始化類庫調用函數”initM(MATCOM_VERSION)”和一個結束類庫調用函數”exitM()”如圖5所示。

圖5 給按鈕添加的代碼

(3)點擊圖3中的繪圖按鈕,得到濾波曲線如圖6所示:一個濾波前的圖形,一個濾波后的圖形。

圖6 運行結果

3 結論

MATCOM提供了MATLAB中.m文件與其他高級語言的接口,使復雜的接口變得非常簡單,并且使.m文件可以編譯為脫離MATLAB環(huán)境獨立執(zhí)行的可執(zhí)行性程序,這樣提高了代碼的復用率,提高了代碼的執(zhí)行速度,使純文本的.m文件變?yōu)槎M制的可執(zhí)行程序,增加了知識保護的安全性。本文通過對實例的分析研究,從中感受到兩者結合進行混合編程d的靈活和很好的可操作性,使用這種方法來提高了程序編寫的效率,取得了非常好的效果。

[1]譚志芳,劉一峰,賈小鐵.MATLAB 與C/C+ +語言混合編程的幾種方法[J].微型機與應用,2001(2):8-10.

[2]李文煜.VC與Matlab混合編程實現(xiàn)圖像處理[J].計算機仿真,2005,22(1):254-257.

[3]石波,陳淑珍,沈海鷗.VC與MATLAB接口方法的剖析[J].計算機工程,2000,26(3):98-100.

[4]郭虹,薄云飛,林冬.VC++與MATLAB 混合編程技術研究[J].計算機工程,2002,28(9):269-271.

[5]李天昀,葛臨東.綜述MA TLAB 與VC+ + 的交互編程[J].計算機仿真,2004,21(9):193-196.

[6]黃金明,武玉強,邢西深.VC++與MATLAB的混合編程研究[J].電腦開發(fā)與應用,2008,21(10):38-41.

[7]王周益,劉繼興,柳長安.VC++與MATLAB 混合編程研究及開發(fā)實例[J].計算機應用研究,2006,(5):154-156.

[8]李云龍,唐六丁,鄧四二,等.基于 VC + +與MATLAB 混合程序設計與應用[J].河南科技大學學報:自然科學版,2008,9(4):50-51.

猜你喜歡
對話框代碼按鈕
當你面前有個按鈕
正?;謴吞摂M機
Bootlace Worms’Secret etc.
中學科技(2018年12期)2018-12-19 11:22:28
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
死循環(huán)
內心不能碰的按鈕
快速抓取對話框中的完整信息
電腦迷(2012年22期)2012-04-29 20:30:54
上饶县| 清涧县| 伊川县| 岳阳市| 道孚县| 宜宾市| 大同市| 探索| 德格县| 金溪县| 东城区| 肇州县| 增城市| 简阳市| 巴林右旗| 海宁市| 那曲县| 客服| 克什克腾旗| 育儿| 壤塘县| 南召县| 衡阳县| 全南县| 武安市| 枝江市| 乾安县| 兴海县| 安陆市| 沁水县| 哈密市| 施秉县| 伊川县| 石柱| 琼海市| 河西区| 柳河县| 洪江市| 湘乡市| 温州市| 南汇区|