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

        ?

        基于ActiveX引擎的VC++與Matlab混合編程及其應(yīng)用

        2010-01-29 07:19:08王若亮李晶娣
        電子設(shè)計工程 2010年9期
        關(guān)鍵詞:引擎設(shè)置利用

        慕 巍,王若亮,李晶娣,邱 亞

        (1.西安應(yīng)用光學研究所 陜西 西安 710065;2.西安飛行自動控制研究所 陜西 西安 710065)

        VC++是微軟公司推出的一套面向?qū)ο蟮目梢暬删幊滔到y(tǒng)[1],是Windows平臺下構(gòu)建32位應(yīng)用程序的強大而又復(fù)雜的開發(fā)工具[2],但其在科學計算方面函數(shù)庫不夠豐富,讀取、顯示數(shù)據(jù)圖形不方便。Matlab是Matrix Laboratory(矩陣實驗室)的縮寫,是由美國MathWorks公司開發(fā)的集數(shù)值分析、符號計算和圖形可視化三大基本功能于一體,功能強大、操作簡單的語言[3]。它包含大量高度集成的函數(shù)可供調(diào)用,是適合科學研究、工程設(shè)計等眾多學科領(lǐng)域使用的簡潔、高效的編程工具[4]。

        為充分發(fā)揮這二者優(yōu)勢,利用Matlab提供的ActiveX引擎,實現(xiàn)在VC++開發(fā)的應(yīng)用程序中完全控制Matlab,使用戶輕松開發(fā)出高效、功能強大的應(yīng)用程序,為工程實踐和科研工作提供強大的技術(shù)支持。

        1 Matlab ActiveX引擎

        Matlab ActiveX引擎(engine),是指一組Matlab提供的接口函數(shù)[5],支持C/C++、Fortran等語言,通過這些接口函數(shù),用戶可以在VB、Delphi、VC++等編程環(huán)境中實現(xiàn)對Matlab的控制,將Matlab作為一個操作引擎使用,使其在后臺運行。操作Matlab引擎常用的函數(shù)及其功能如表1所示。

        表1 Matlab引擎常用的函數(shù)及其功能表Tab.1 Functions of Matlab engine

        通過引擎方式,應(yīng)用程序會打開一個新的Matlab進程,將Matlab作為一個功能強大的和可編程的數(shù)學函數(shù)庫,調(diào)用Matlab中大量的數(shù)學計算和圖形處理函數(shù),通過控制它完成任何計算和繪圖操作。同時,引擎方式打開的Matlab進程會在任務(wù)欄顯示自己的圖標,打開該窗口,可以觀察主程序通過引擎方式控制Matlab運行的流程,并可在其中輸入任何Matlab命令。

        2 ActiveX引擎實現(xiàn)VC和Matlab混合編程

        在VC++編程環(huán)境下利用Matlab ActiveX引擎實現(xiàn)VC++和Matlab的混合編程,需要對VC++編譯環(huán)境和應(yīng)用程序進行設(shè)置,具體步驟如下:

        1)通過菜單 Tools/Options,打開Visual C++6.0設(shè)置屬性頁,進入Directories選項卡,在Show Directories for下拉列表中選擇 Include Files,添加路徑:E:MATLAB7externinclude(假定Matlab的安裝目錄為E:MATLAB7),如圖1所示。

        圖1 VC++編譯環(huán)境設(shè)置步驟1Fig.1 Step 1 of setting VC++compiling environment

        2)再通過Show Directories for下拉列表中選擇 Library Files,添加路徑:E:MATLAB7externlibwin32Microsoftmsvc70,如圖2所示。

        圖2 VC++編譯環(huán)境設(shè)置步驟2Fig.2 Step 2 of setting VC++compiling environment

        3)通過菜單 Projects/Settings,進入 Link頁面,在 Object/Library Modules框中,添加庫文件名:libmx.lib,libmat.lib,libeng.lib,如圖3所示。

        4)在使用Matlab引擎函數(shù)的程序頭文件中添加如下代碼:

        圖3 VC++編譯環(huán)境設(shè)置步驟3Fig.3 Step 3 of setting VC++compiling environment

        5)在應(yīng)用程序中添加調(diào)用Matlab引擎的程序代碼:

        if(!(ep=engOpen(NULL))) //測試是否啟動 Matlab 引擎成功

        以上步驟是對VC與Matlab混合編程的編譯環(huán)境和應(yīng)用程序進行設(shè)置,在完成了以上基本步驟后就可以利用Matlab引擎庫函數(shù)engEvalString來調(diào)用Matlab的內(nèi)建函數(shù)了。以上步驟 1)、2)只需設(shè)置一次,而步驟 3)、4)、5)對每個工程都要單獨設(shè)定。

        3 應(yīng)用實例分析

        對大部分軟件研發(fā)人員來說利用VC++編程方便、高效,但是要顯示數(shù)據(jù)圖形就不那么容易了,這時可利用Matlab ActiveX引擎輔助畫圖做數(shù)據(jù)分析。下面通過一個具體的應(yīng)用實例來說明如何實現(xiàn)VC++與Matlab ActiveX引擎的混合編程。程序的主要功能是在VC++中對數(shù)組x計算函數(shù)值y=5sinx,然后調(diào)用Matlab繪制函數(shù)y對x的曲線。

        首先,利用VC++6.0的MFC建立一個基于對話框的應(yīng)用程序,如圖4,添加相應(yīng)按扭,并為其添加相應(yīng)的成員函數(shù)。

        圖4 ActiveX引擎測試程序界面Fig.4 Interface of ActiveX engine of test program

        其次,根據(jù)前面介紹的ActiveX引擎實現(xiàn)VC++和Matlab混合編程的實現(xiàn)步驟,為程序設(shè)置相應(yīng)的編譯環(huán)境并添加連接庫函數(shù)。

        然后,調(diào)用Matlab的內(nèi)建函數(shù)和命令,主要編寫程序代碼如下:

        1)在“啟動引擎”按扭的成員函數(shù)中,添加如下代碼:

        if(!(ep=engOpen(NULL))) //測試是否啟動 Matlab 引擎成功

        2)在“關(guān)閉引擎”按扭的成員函數(shù)中,添加代碼:

        engClose(ep);//關(guān)閉 Matlab 引擎

        3)在“測試”按扭的成員函數(shù)中,添加如下代碼:

        //定義 mxArray數(shù)組 xx,yy,為 1行,100列的實數(shù)數(shù)組

        mxArray*xx=mxCreateDoubleMatrix(1,100,mxREAL);

        mxArray*yy=mxCreateDoubleMatrix(1,100,mxREAL);

        memcpy(mxGetPr(xx),x,100*sizeof(double));//將 x 復(fù)制到mxarray數(shù)組xx中

        memcpy(mxGetPr(yy),y,100*sizeof(double));//將 y 復(fù)制到mxarray數(shù)組yy中

        engPutVariable(ep,“xx”,xx);//將 mxArray 數(shù)組 xx 寫入到Matlab,命名為xx

        engPutVariable(ep,“yy”,yy);//將 mxArray 數(shù)組 yy 寫入到Matlab,命名為yy

        engEvalString(ep,“plot(xx,yy);”);//向 Matlab 引 擎 發(fā)送畫圖命令

        engEvalString(ep,“xlabel(‘x’);”);//向圖形窗口添加橫坐標標注

        engEvalString(ep,“ylabel(‘y=5*sin(x)’);”);//向圖形窗口添加縱坐標標注

        編譯運行,先點擊“啟動引擎”按鈕,Matlab引擎啟動后,再點擊“測試”按鈕,就可以得到如圖5所示的結(jié)果。

        該實例是利用ActiveX引擎實現(xiàn)VC++與Matlab混合編程的一個簡單應(yīng)用,在實際的數(shù)值計算、信號處理、控制系統(tǒng)開發(fā)等工程應(yīng)用中,可以很好的利用基于ActiveX引擎的VC++和Matlab的混合編程技術(shù),簡化應(yīng)用程序的開發(fā)過程,縮短開發(fā)周期。

        圖5 ActiveX引擎測試曲線Fig.5 Test curve of ActiveX engine

        4 結(jié)束語

        本文詳細介紹了在VC++編譯環(huán)境下利用Matlab提供的ActiveX引擎實現(xiàn)應(yīng)用系統(tǒng)設(shè)計和分析的具體方法,并通過一個具體應(yīng)用實例介紹了VC++如何利用Matlab ActiveX引擎進行輔助畫圖和數(shù)據(jù)分析。

        Matlab不但具有強大的數(shù)值計算和符號計算能力,而且為不同領(lǐng)域提供了豐富的工具箱[5]。而VC++在面向?qū)ο蟮膽?yīng)用程序開發(fā)方面功能強大、靈活性好[6]。利用Matlab提供的ActiveX引擎,實現(xiàn)了VC++和Matlab的混合編程,能夠發(fā)揮各自優(yōu)勢,為用戶提供了一個友好的編程接口,縮短了工程應(yīng)用軟件的開發(fā)周期,同時也提高了程序的運行效率。

        [1]姚領(lǐng)田.精通MFC程序設(shè)計[M].北京:人民郵電出版社,2006.

        [2]謝佩軍,計時鳴,張利.VC++與MATLAB混合編程的探討[J].計算機應(yīng)用與軟件,2006(2):128-130.XIE Pei-jun,JI Shi-ming,ZHANG Li.Research of combined programming of VC++and MATLAB[J].Computer Applications and Software,2006(2):128-130.

        [3]張靜.MATLAB在控制系統(tǒng)中的應(yīng)用[M].北京:電子工業(yè)出版社,2007.

        [4]王沫然.MATLAB 6.0與科學計算[M].北京:電子工業(yè)出版社,2001.

        [5]劉志儉.MATLAB應(yīng)用程序接口用戶指南[M].北京:科學出版社,2000.

        [6]彭猛.VC++與MATLAB混合編程的研究 [J].科技咨詢導(dǎo)報,2007(8):21-21.PENG Meng.Research on hybrid programming of VC++and Matlab[J].Science and Technology Consulting Herald,2007(8):21-21.

        猜你喜歡
        引擎設(shè)置利用
        利用min{a,b}的積分表示解決一類絕對值不等式
        中隊崗位該如何設(shè)置
        少先隊活動(2021年4期)2021-07-23 01:46:22
        利用一半進行移多補少
        利用數(shù)的分解來思考
        Roommate is necessary when far away from home
        藍谷: “涉藍”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        本刊欄目設(shè)置說明
        中俄臨床醫(yī)學專業(yè)課程設(shè)置的比較與思考
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開發(fā)
        国产亚洲精品综合99久久| 国产最新进精品视频| 天美麻花果冻视频大全英文版 | 加勒比婷婷色综合久久| 亚洲精品无码专区| 国产zzjjzzjj视频全免费| 久久精品国产一区二区蜜芽| 色婷婷av一区二区三区不卡| 久久久亚洲熟妇熟女av| 国产精品 人妻互换| 国产欧美精品一区二区三区–老狼 | 亚洲av老熟女一区二区三区 | 永久免费毛片在线播放| 欧美操逼视频| 亚洲黄色在线看| 亚洲成人av在线播放不卡 | 无码人妻aⅴ一区二区三区| 色爱区综合五月激情| 久久久久久免费播放一级毛片| 亚洲白嫩少妇在线喷水| 国产乱子轮xxx农村| 国产主播一区二区三区在线观看| 亚洲熟妇av日韩熟妇av| 中文av字幕一区二区三区| 四虎影视成人永久免费观看视频| chinesefreexxxx国产麻豆| 亚洲精品中文有码字幕| 美女丝袜美腿玉足视频| 色妞ww精品视频7777| 精品少妇大屁股白浆无码| av有码在线一区二区三区| 粉嫩小泬无遮挡久久久久久| 免费人成无码大片在线观看| 亚洲精品综合色区二区| 亚洲一区二区三区av资源| 无码精品人妻一区二区三区av| 福利一区视频| 久久天堂av综合合色| 国色天香社区视频在线| 亚洲 自拍 另类 欧美 综合| 丰满人妻AV无码一区二区三区|