• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2010-01-29 07:19:08王若亮李晶娣
      電子設(shè)計(jì)工程 2010年9期
      關(guān)鍵詞:數(shù)組引擎應(yīng)用程序

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

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

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

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

      1 Matlab ActiveX引擎

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

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

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

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

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

      1)通過菜單 Tools/Options,打開Visual C++6.0設(shè)置屬性頁,進(jìn)入Directories選項(xiàng)卡,在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,進(jìn)入 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)用程序進(jìn)行設(shè)置,在完成了以上基本步驟后就可以利用Matlab引擎庫函數(shù)engEvalString來調(diào)用Matlab的內(nèi)建函數(shù)了。以上步驟 1)、2)只需設(shè)置一次,而步驟 3)、4)、5)對每個工程都要單獨(dú)設(shè)定。

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

      對大部分軟件研發(fā)人員來說利用VC++編程方便、高效,但是要顯示數(shù)據(jù)圖形就不那么容易了,這時可利用Matlab ActiveX引擎輔助畫圖做數(shù)據(jù)分析。下面通過一個具體的應(yīng)用實(shí)例來說明如何實(shí)現(xiàn)VC++與Matlab ActiveX引擎的混合編程。程序的主要功能是在VC++中對數(shù)組x計(jì)算函數(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引擎實(shí)現(xiàn)VC++和Matlab混合編程的實(shí)現(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ù)數(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’);”);//向圖形窗口添加橫坐標(biāo)標(biāo)注

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

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

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

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

      4 結(jié)束語

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

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

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

      [2]謝佩軍,計(jì)時鳴,張利.VC++與MATLAB混合編程的探討[J].計(jì)算機(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與科學(xué)計(jì)算[M].北京:電子工業(yè)出版社,2001.

      [5]劉志儉.MATLAB應(yīng)用程序接口用戶指南[M].北京:科學(xué)出版社,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ù)組引擎應(yīng)用程序
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      刪除Win10中自帶的應(yīng)用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      藍(lán)谷: “涉藍(lán)”新引擎
      商周刊(2017年22期)2017-11-09 05:08:31
      尋找勾股數(shù)組的歷程
      無形的引擎
      河南電力(2015年5期)2015-06-08 06:01:46
      基于Cocos2d引擎的PuzzleGame開發(fā)
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      VB數(shù)組在for循環(huán)中的應(yīng)用
      考試周刊(2012年88期)2012-04-29 04:36:47
      三星電子將開設(shè)應(yīng)用程序下載商店
      黄陵县| 北海市| 石河子市| 洛川县| 龙游县| 日土县| 温宿县| 门头沟区| 凤凰县| 宁海县| 漠河县| 城市| 宁强县| 鹤庆县| 深州市| 永福县| 阿瓦提县| 洛扎县| 加查县| 宁陵县| 岑巩县| 沈丘县| 惠东县| 安乡县| 普安县| 宁明县| 临沭县| 玛纳斯县| 大连市| 无为县| 佛学| 龙门县| 广水市| 达拉特旗| 平远县| 阿巴嘎旗| 巫溪县| 太原市| 张家港市| 科技| 德格县|