亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        高秋燕

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

        0 引言

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

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

        1 MATLAB,MATCOM與VC++特點(diǎn)

        1.1 MATLAB的特點(diǎn)

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

        1.2 VC++的特性

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

        1.3 基于MATCOM的MATLAB和VC++的結(jié)合

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

        圖1 Visual Matcom工具條

        2 接口實(shí)現(xiàn)

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

        2.1 建立.m文件

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

        圖2 kalman.m文件

        2.2 將.m文件轉(zhuǎn)換成C++代碼

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

        圖3 添加繪圖按鈕后的對(duì)話框界面

        (2)此時(shí),點(diǎn)擊圖1所示的第一個(gè)按鈕,就可以對(duì)kalman.m進(jìn)行m文件進(jìn)行轉(zhuǎn)換。然后把kalman.cpp的內(nèi)容拷貝到void CTestDlg::OnDraw()中。

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

        圖4.m文件轉(zhuǎn)換后生成的工程文件

        2.3 界面如何顯示

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

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

        圖5 給按鈕添加的代碼

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

        圖6 運(yùn)行結(jié)果

        3 結(jié)論

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

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

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

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

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

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

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

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

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

        猜你喜歡
        對(duì)話框代碼按鈕
        哪個(gè)是門鈴真正的按鈕
        當(dāng)你面前有個(gè)按鈕
        正?;謴?fù)虛擬機(jī)
        Bootlace Worms’Secret etc.
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        死循環(huán)
        內(nèi)心不能碰的按鈕
        特级毛片a级毛片在线播放www| 亚洲av无码成人专区片在线观看 | chinesefreexxxx国产麻豆| 麻豆国产VA免费精品高清在线| 精品国产亚洲av高清日韩专区| 少妇无码av无码专线区大牛影院| 国产真实夫妇交换视频| 欧美日韩国产亚洲一区二区三区 | 国产在线观看视频一区二区三区| 人妻少妇精品视频三区二区一区 | 人妻人妻少妇在线系列| 国产自拍三级黄片视频| 亚洲国产精品成人久久| 青草国产精品久久久久久| 亚洲aⅴ久久久噜噜噜噜| 蜜臀人妻精品一区二区免费| 国产精品日本一区二区在线播放| 国模无码视频一区| 欧洲一级无码AV毛片免费| 日本一区二区免费在线看| 国产99久久久国产精品免费看| 亚洲男人天堂网站| 一本色道久久88综合亚精品| 国产欧美综合一区二区三区| 国产亚洲人成a在线v网站| 免费无码又爽又刺激又高潮的视频 | 国内精品久久久久久久影视麻豆| 北岛玲精品一区二区三区| 久草手机视频在线观看| 中文字幕丰满伦子无码| 无码电影在线观看一区二区三区| 少妇又色又爽又刺激的视频| 日韩欧美亚洲国产精品字幕久久久 | 国产精品人人爱一区二区白浆| 国产人妖网站在线视频| 无遮无挡爽爽免费毛片| 久久免费精品国产72精品剧情| av在线免费观看麻豆| 国产69精品久久久久久久| 国产免费AV片在线看| 口爆吞精美臀国产在线|