999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ActiveX引擎的VC++與Matlab混合編程及其應用

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

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

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

VC++是微軟公司推出的一套面向對象的可視化集成編程系統[1],是Windows平臺下構建32位應用程序的強大而又復雜的開發工具[2],但其在科學計算方面函數庫不夠豐富,讀取、顯示數據圖形不方便。Matlab是Matrix Laboratory(矩陣實驗室)的縮寫,是由美國MathWorks公司開發的集數值分析、符號計算和圖形可視化三大基本功能于一體,功能強大、操作簡單的語言[3]。它包含大量高度集成的函數可供調用,是適合科學研究、工程設計等眾多學科領域使用的簡潔、高效的編程工具[4]。

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

1 Matlab ActiveX引擎

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

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

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

2 ActiveX引擎實現VC和Matlab混合編程

在VC++編程環境下利用Matlab ActiveX引擎實現VC++和Matlab的混合編程,需要對VC++編譯環境和應用程序進行設置,具體步驟如下:

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

圖1 VC++編譯環境設置步驟1Fig.1 Step 1 of setting VC++compiling environment

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

圖2 VC++編譯環境設置步驟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引擎函數的程序頭文件中添加如下代碼:

圖3 VC++編譯環境設置步驟3Fig.3 Step 3 of setting VC++compiling environment

5)在應用程序中添加調用Matlab引擎的程序代碼:

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

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

3 應用實例分析

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

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

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

其次,根據前面介紹的ActiveX引擎實現VC++和Matlab混合編程的實現步驟,為程序設置相應的編譯環境并添加連接庫函數。

然后,調用Matlab的內建函數和命令,主要編寫程序代碼如下:

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

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

2)在“關閉引擎”按扭的成員函數中,添加代碼:

engClose(ep);//關閉 Matlab 引擎

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4 結束語

本文詳細介紹了在VC++編譯環境下利用Matlab提供的ActiveX引擎實現應用系統設計和分析的具體方法,并通過一個具體應用實例介紹了VC++如何利用Matlab ActiveX引擎進行輔助畫圖和數據分析。

Matlab不但具有強大的數值計算和符號計算能力,而且為不同領域提供了豐富的工具箱[5]。而VC++在面向對象的應用程序開發方面功能強大、靈活性好[6]。利用Matlab提供的ActiveX引擎,實現了VC++和Matlab的混合編程,能夠發揮各自優勢,為用戶提供了一個友好的編程接口,縮短了工程應用軟件的開發周期,同時也提高了程序的運行效率。

[1]姚領田.精通MFC程序設計[M].北京:人民郵電出版社,2006.

[2]謝佩軍,計時鳴,張利.VC++與MATLAB混合編程的探討[J].計算機應用與軟件,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在控制系統中的應用[M].北京:電子工業出版社,2007.

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

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

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

猜你喜歡
引擎設置利用
利用min{a,b}的積分表示解決一類絕對值不等式
中等數學(2022年2期)2022-06-05 07:10:50
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
利用一半進行移多補少
利用數的分解來思考
Roommate is necessary when far away from home
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
主站蜘蛛池模板: 2020国产免费久久精品99| 国产v精品成人免费视频71pao| 爆乳熟妇一区二区三区| 亚洲人成色在线观看| 国内精品视频在线| 久久频这里精品99香蕉久网址| 99久久国产综合精品2023| 欧美一级黄色影院| 为你提供最新久久精品久久综合| 99ri国产在线| 成人精品免费视频| 午夜精品久久久久久久无码软件| 久久夜夜视频| 国产自在线播放| 成色7777精品在线| 在线免费亚洲无码视频| av在线无码浏览| 久久综合九九亚洲一区| 97国产成人无码精品久久久| 国产手机在线小视频免费观看 | 中字无码av在线电影| 中文字幕亚洲综久久2021| 成人亚洲天堂| 亚洲一区二区约美女探花| 久久一本精品久久久ー99| 亚洲开心婷婷中文字幕| 亚洲高清在线天堂精品| 福利在线免费视频| 少妇人妻无码首页| 亚洲精品动漫在线观看| 美女免费精品高清毛片在线视| 久久青草精品一区二区三区| 国产精品jizz在线观看软件| 亚洲综合狠狠| 国产剧情国内精品原创| 国产欧美日韩va另类在线播放| 在线亚洲天堂| 无码中文字幕乱码免费2| 无码专区在线观看| 在线亚洲精品福利网址导航| 呦女精品网站| 成AV人片一区二区三区久久| 亚洲码在线中文在线观看| 亚洲第一黄片大全| 久久综合AV免费观看| 99久久精品国产麻豆婷婷| 亚洲AV无码乱码在线观看代蜜桃| 亚洲午夜国产片在线观看| 亚洲浓毛av| 手机在线国产精品| 2021国产乱人伦在线播放| 国产福利小视频在线播放观看| 国产熟女一级毛片| 日本高清在线看免费观看| 永久毛片在线播| 欧美激情第一欧美在线| 国产女人在线观看| 免费激情网站| 色婷婷电影网| 国产原创演绎剧情有字幕的| 伊人久久影视| 激情综合五月网| 欧美一级高清免费a| а∨天堂一区中文字幕| 自拍偷拍欧美日韩| 午夜色综合| 国产成人凹凸视频在线| 亚洲国产天堂在线观看| 久久人午夜亚洲精品无码区| AⅤ色综合久久天堂AV色综合| 在线高清亚洲精品二区| 成人精品区| 国产精品永久不卡免费视频| 欧美成人第一页| 午夜国产在线观看| 亚洲人成人无码www| 亚洲一区二区精品无码久久久| 国产精品男人的天堂| 亚洲性影院| 国内精品视频| 欧美综合区自拍亚洲综合绿色 | 亚洲男人在线|