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

基于Mideva編譯器的MATLAB與VC++混合編程技術

2016-04-13 09:52:29柴西林姜麗德
網絡安全與數據管理 2016年1期
關鍵詞:界面

柴西林,姜麗德,馮 凱

(1.西北師范大學知行學院,甘肅 蘭州730070;2. 甘肅天鑒建設集團有限公司,甘肅 蘭州730000)

基于Mideva編譯器的MATLAB與VC++混合編程技術

柴西林1,姜麗德2,馮 凱1

(1.西北師范大學知行學院,甘肅 蘭州730070;2. 甘肅天鑒建設集團有限公司,甘肅 蘭州730000)

主要研究使用MATLAB編譯器實現MATLAB和VC++混合編程的方法。通過VC++直接運行Mideva編譯好的MATLAB可執行文件,或者調用Mideva編譯好的M文件動態鏈接庫,或者直接使用將M文件由Mideva轉換的C++代碼等三種方式之一,均可實現混合編程。將以上三種方法,通過一個基于MFC的對話框程序實例,較直觀地演示混合編程的實現過程。

MATLAB;VC++;Mideva編譯器;混合編程

0 引言

MATLAB是當前在國內外十分流行的工程設計和系統仿真軟件[1]。MATLAB具有很強的數值計算和分析能力,尤其是其功能龐大的工具箱可直接應用到很多工程領域[2]。它以函數的形式為用戶提供不同領域的計算,通過調用需要的函數并賦予實際參數,用戶就能解決實際問題[3]。而VC++在這方面的應用不太成熟,但是VC++具有高效、靈活等特點。在科學研究和工程實踐中,將MATLAB和VC++結合起來進行混合編程,具有非常重要的意義。但是,M語言是一種解釋性語言,其應用場合和執行速度都受到了限制;而VC++是一種高效率、能對硬件進行操作的高級語言。將兩者的優勢結合起來,無疑給編程者帶來了福音,使工作效率大大提高,開發周期明顯縮短。

MATLAB與Visual C++的混合編程技術方法有很多,主要有使用MATLAB引擎、使用ActiveX控件、使用MAT文件共享數據、使用Mideva工具、使用C-MEX技術和使用Matlab其他編譯器等多種技術實現混合編程。通常,根據兩款軟件的特點,在混合編程中核心程序的開發主要由Matlab完成,而VC++可用來開發交互式很好的GUI且易于與硬件接口。

1 Mideva集成調試編輯環境

1.1 Mideva簡介

Mideva是一種具有比MATLAB更強大的編輯、調試功能的集成調試編輯環境[4],通過其內核Matcom 能夠將M文件轉化為C語言的代碼[5],并通過Visual C++將其編譯成可執行程序或動態鏈接庫[5]。近千個基本的MATLAB功能函數包含于Mideva中,在與C++的混合編程中只需做必要的設置即可,從而不再依賴MATLAB,實現了對MATLAB強大工具箱函數的調用。不足之處在于,Matcom對struct等類的支持不足,而且有些繪圖尤其是三維繪圖效果不是很好。因此,涉及三維繪圖以及M文件太大的情況下,不適合使用。

1.2 Mideva集成調試編輯環境的配置

在MATLAB環境中可以由M文件生成exe文件,但此exe文件仍需要MCR才能運行,而利用Matcom則可以生成不再需要Matcom環境支持的exe文件[6-7]。其生成方法相當簡便,直接利用Matcom菜單“File/Compile to exe…”彈出如圖1所示的對話框,然后選擇所需的M文件,Matcom會自動生成相應的exe文件。Mideva的此項功能是僅針對Visual C++開發的,生成dll的方法與生成exe文件的方法類似,在此過程中會同時生成相應的cpp文件。因此,如果使用Visual C++開發程序,最好直接使用上述過程中編譯生成的cpp文件,而不要直接使用dll文件。編譯過后在Mideva下方的輸出欄,如圖1所示,顯示編譯完成。

圖1 編譯為可執行程序

值得說明的是,Mideva環境下繪制圖形,還可以設計GUI界面程序,與MATLAB的GUIDE相似[8]。Mideva還可以像VC++一樣對M文件進行調試。

2 Mideva集成調試編輯環境的使用

Mideva安裝時會提示選取C/C++編輯器,還需要指定MATLAB,以便使編譯文件中的一些系統函數找到所需路徑。Mideva接口方便,通過菜單File→Compile to dll可直接實現M文件到可執行文件的轉換,同時會自動生成相應的C/CPP文件。為了將C/CPP代碼添加到VC++的工程中,必要的設置主要有以下幾步。

(1)添加頭文件

在“matcom45lib”目錄下,可以找到Mideva提供的函數頭文件Matlib.h。具體方法是:在菜單“Tools/Options…”中,選擇“Directories”選項卡,然后在“Show Directories for”中選取“Include files”,然后添加目錄“matcom45lib”。如圖2所示。

圖2 添加頭文件

(2)添加庫文件

在“Show Directories for”中選取“Library files”,然后添加目錄“matcom45lib”。如圖3所示。需要注意的是,不同版本的Mideva文件名可能略有差異,可以修改matlib.h中Matcom_VERSION宏定義。

圖3 添加庫文件

以VC6.0為例,Mideva同時提供可供使用的插件,單擊VC6.0菜單“Tools/Customize...”,將會彈出如圖4所示對話框,然后選擇“Add-ins and Macro Files”選項卡,單擊瀏覽按鈕,選擇“matcom45/bin/mvcide.dll”,單擊關閉,則在VC6.0集成環境中出現Visual Matcom圖標,此時表明MATLAB的編譯工具已與VisualC ++連接,如圖5所示。

圖4 添加Visual Matcom

圖5 在VC下Visual Matcom工具欄

3 使用Mideva實現混合編程

3.1 混合編程實現過程流程圖

運用Visual C++調用MATLAB實現混合編程,通過以下三種方式均可實現:(1)Mideva將M文件編譯為可執行文件,VC通過編程執行可執行文件實現混合編程。(2)Mideva將M文件編譯為動態鏈接庫,VC在運行時調用。(3)Mideva將文件轉換為C++代碼,VC直接使用轉換后的代碼進行混合編程。將以上三種方法通過一個基于MFC的對話框程序實例,演示混合編程的實現過程,如圖6所示。

3.2 基于 MFC的對話框實例程序實現混合編程的步驟

(1)創建名稱為MidevaDemo1.m的M文件。在MATLAB環境下創建M文件,內容為一個簡單的正弦函數。并將M文件保存在新建的工程目錄下。

圖6 混合編程的實現過程流程圖

(2)在Mideva環境下將MidevaDemo1.m分別編譯為動態鏈接庫和可執行文件,在工程目錄下產生相關的代碼。由于動態鏈接庫和可執行文件產生的“g_MidevaDemo1.cpp”不同,所以分別新建兩個工程目錄“DLLWORK”和“EXEWORK”。其他兩個文件“MidevaDemo1.h”和“MidevaDemo1.cpp”在兩個工程中內容相同。

(3)創建MFC對話框的工程,工程名稱為MCCDemo。設計對話框界面如圖7所示。

圖7 混合編程總界面

(4)在文件“MccDemo1Dlg.cpp”中包含頭文件:

include

(5)向工程添加文件V4501.lib,如圖8所示。

(6)在圖7所示的MFC實例混合編程運行結果總界面中,單擊“執行EXE程序”按鈕,則彈出如圖9所示界面;單擊“調用DLL代碼”則彈出如圖10所示界面;單擊“執行源代碼”則彈出如圖11所示界面。

4 結論

從上述運行結果可以看出,不同的運行方式得到的圖形繪制結果一致。運用VC++通過編程執行exe文件實現的混合編程,這種方式易于維護,但應用程序耦合比較松散,界面不統一。VC ++調用MATLAB數學庫和經過編譯的動態鏈接庫,具有內存需求小、執行速度快、可以發布給沒有MATLAB的用戶使用等顯著的優點。但也有幾個缺點:用戶不能夠在基于MATLAB數學庫和圖形庫的應用程序中使用MATLAB的 eval()和input()函數,不能調用圖形句柄系統的函數,不能調用MATLAB工具箱的函數。本文僅在可行性(feasibility)層面上進行了論證,對于實質性的應用還需進一步研究和實踐。

圖8 向工程添加庫文件

圖9 運行可執行文件結果

圖10 執行調用動態鏈接庫的結果

圖11 執行直接轉換后的代碼結果

[1] 柴西林,邵照勇.基于MatlabGUI的數字濾波器設計及其應用[J].微型機與應用,2012,31(14):3-6.

[2] 張亮,王繼陽.MATLAB與C/C++混合編程[M].北京:人民郵電出版社,2008.

[3] 柴西林,朱國平,邵照勇.基于不同算法實現的數字圖像水印技術及其抗攻擊性比較[J].數字技術與應用,2012(3):97-98.

[4] IDEVA1 M.Matcom &Visual Matcom user’s guide V 4.5 Release [M] .MathToo1s Ltd.,1999.

[5] 蘇金明,黃國.MATLAB與外部程序接口[M].北京:電子工業出版社,2008.

[6] 楊文臣,張輪,何兆成,等.Matlab 與VC++混合編程及其在交通信號兩級模糊控制中的應用[J].公路交通科技,2012,29(9):123-128.

[7] 易馳,文小玲,鄒艷華,等.基于VC++6.0的讀表軟件設計[J].微型機與應用,2014,33(5):16-19.

[8] 肖永韌,解習農,劉曉峰.VC 與MATLAB 混合編程之DL L實現方法[J].計算機工程與應用, 2001(13):174- 176.

MATLAB and VC++ mixed programming technology based on mideva compiler

Chai Xilin1, Jiang Lide2,Feng Kai1

(1.Zhixing College, Northwest Normal University,Lanzhou 730070, China;2.Gansu Tianjian Construction Group Co., Ltd.,Lanzhou 730000, China)

This article mainly studies the method of using Mideva compiler to realize the mixed programming between Matlab and VC++. There are three main ways. In first one,the M file is compiled into executable files by the Mideva compiler, and then the executable file is executed by VC++.In second one, VC++ calls dynamic link library in the run,which is compiled from the M file by the Mideva compiler.In third one, Mideva compiler converts the M file into C++ code, then VC++ uses the converted code directly. Through a process of dialog-based MFC application instance, it is intuitive to demonstrate the implementation process of mixed programming for the foregoing three ways.

MABLAB;VC++; mideva compiler;mixed programming

TP311

A

1674-7720(2016)01-0023-04

柴西林,姜麗德,馮凱.基于Mideva編譯器的MATLAB與VC++混合編程技術 [J] .微型機與應用,2016,35(1):23-26

2015-09-10)

柴西林(1984-),通信作者,女,碩士,講師,主要研究方向:信號處理與智能控制。E-mail:chai.xilin@163.com。

姜麗德(1988-),女,本科,主要研究方向:自動化儀器儀表。

馮凱(1983-),男,本科,助理實驗師,主要研究方向:電子與信息工程。

猜你喜歡
界面
聲波在海底界面反射系數仿真計算分析
微重力下兩相控溫型儲液器內氣液界面仿真分析
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
西門子Easy Screen對倒棱機床界面二次開發
空間界面
金秋(2017年4期)2017-06-07 08:22:16
鐵電隧道結界面效應與界面調控
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
主站蜘蛛池模板: 免费国产高清视频| 欧美一区二区三区香蕉视| 久久人妻xunleige无码| 亚洲国产欧美目韩成人综合| 国产永久无码观看在线| 国产91丝袜在线观看| 欧美在线视频不卡第一页| 国产毛片一区| 乱码国产乱码精品精在线播放| 欧美一区二区自偷自拍视频| 国产精品三级av及在线观看| 国产永久在线观看| 黄色三级网站免费| 99热这里只有成人精品国产| 99性视频| 97免费在线观看视频| 亚洲一级色| 高清码无在线看| 在线观看无码av五月花| 怡红院美国分院一区二区| 亚洲欧洲AV一区二区三区| 天天色天天综合网| 国产91精品久久| 在线观看国产精美视频| 国产成人高清精品免费软件| 99精品影院| 日本久久免费| 五月丁香在线视频| 国产一级毛片高清完整视频版| 国产成人高清亚洲一区久久| 日本手机在线视频| 一级不卡毛片| 成年午夜精品久久精品| 欧美 国产 人人视频| 97久久精品人人做人人爽| 国产91九色在线播放| 亚洲欧美不卡| 日韩大乳视频中文字幕| 亚洲综合第一页| 毛片免费在线| 亚洲an第二区国产精品| 久久香蕉国产线看观看精品蕉| 国产中文在线亚洲精品官网| 欧美日本在线| 中文字幕亚洲精品2页| 欧美在线黄| 国产精品白浆在线播放| 精品超清无码视频在线观看| 国产精品播放| 欧美日韩精品在线播放| 久久semm亚洲国产| 久久久久免费看成人影片| 无码高清专区| 熟妇人妻无乱码中文字幕真矢织江 | 中文精品久久久久国产网址 | 午夜a级毛片| a级毛片免费网站| 国产日本一区二区三区| 在线人成精品免费视频| 国产高清在线精品一区二区三区| 午夜福利免费视频| 亚洲AⅤ永久无码精品毛片| 在线a视频免费观看| 日本三级欧美三级| 亚洲精品不卡午夜精品| 欧美国产在线看| 成人午夜免费视频| 婷婷久久综合九色综合88| 国产你懂得| 国产一区二区精品福利| 亚洲人妖在线| 91精品网站| 国产精品天干天干在线观看| a级毛片毛片免费观看久潮| 国产一区二区福利| 91在线视频福利| 一级成人a做片免费| 色网在线视频| 亚洲性日韩精品一区二区| 亚洲成人动漫在线观看| 国产成人欧美| 久久精品人妻中文系列|