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

VisuaI Studio與MATLAB協同編程方法研究

2016-12-21 00:55:04袁培燕宋明陽
計算機教育 2016年9期

袁培燕+宋明陽

摘要:Visual Studio(vs)與MATLAB協同編程技術充分結合了前者在程序設計方面的靈活性與后者強大的數學函數庫功能,優勢互補。然而,該結合在工程實踐方面偏弱,不利于兩者的大規模應用。針對該問題,文章基于VS與MATLAB協同編程的3種方案,通過具體實例詳細闡述兩者協同編程的實現步驟,分析了3種方案各自的優缺點,以期降低初學者的學習門檻。

關鍵詞:Visual Studio;MATLAB;協同編程;DLL文件;COM組件

0引言

Visual Studio(VS)是一款面向對象的程序開發平臺,它通過生成程序框架減少編程人員的工作量,通過可視化的圖形開發控件設計簡潔美觀的軟件界面,并支持多種編程語言,具有較好的程序設計靈活性和用戶體驗友好性,但在數學運算和函數繪圖方面存在不足之處。

MATLAB作為專業的數學軟件,具有高效的數學運算能力和強大的函數圖形處理能力,是實驗室中一款常用的專業軟件。然而,由于其專業性較強、用戶界面操作復雜,用戶的體驗友好度不高。

在程序設計中,有效結合VS良好的用戶體驗性、程序設計靈活性和MATLAB強大的數學函數庫,可以充分發揮雙方的優點。但現有的VS與MATLAB協同編程工作側重于相關學術理論知識,在工程實踐方面的應用不夠深入。本文針對MATLAB引擎法、DLL文件法和COM組件法3種方案,結合實例重點描述VS與MATLAB協同編程的具體操作方法和詳細步驟,最后通過對比實驗過程和實驗結果,闡述3種方案各自的優點和不足。

1.MATLAB與VS協同編程方法簡介

1.1VS調用MATLAB引擎的方法

MATLAB引擎是一組API函數接口,用戶可以使用這組接口以發送腳本命令的方式調用MATLAB中的函數。在具體實例中,C/C++程序作為前端,可以向作為后臺的MATLAB引擎發送控制命令,MATLAB引擎根據控制命令的種類做出不同的響應。這種方法的實質是ActiveX控件調用MATLAB進程。

1.2VS調用DLL文件的方法

DLL文件即動態鏈接庫文件,是應用程序的一部分。exe程序啟動時,與之對應的DLL文件會被調用。MATLAB自帶編譯器,用戶可以借助該編譯器把已經編寫好的*m文件編譯為DLL文件,然后在C/C++程序中直接使用DLL文件中寫好的MATLAB函數。

1.3VS調用COM組件的方法

COM組件,即組件對象模型,是一種通用的對象接口模型,適用于任何語言。任何語言的程序通過生成COM組件都可以被其他語言程序調用。而MATLAB的編譯器可以把用戶編寫的*m文件編譯為COM組件,供其他平臺程序使用。

2.MATLAB與VS協同編程的實現

2.1實驗-MATLAB引擎法

在VS2010中建立MFC工程,以向MATLAB引擎發送命令的方式實現協同編程。

2.1.1前期配置

1)系統環境變量配置。

在“我的電腦→屬性→高級→環境變量→用戶變量/系統變量→PATH”選項中添加路徑:\bin:\bin\win64。

2)VS2010環境配置。

(1)首先建立一個基于對話框程序的MFC工程,工程名為test。

(2)設置工程目錄,設置方法如下:

在“項目→test屬性頁→配置屬性→VS2010目錄→包含目錄”選項中添加\extemkinclude;

在“項目→test屬性頁一配置屬性→VS2010目錄→庫目錄”選項中添加\extem\lib\win64/kmicrosoft;

在“項目→test屬性頁→配置屬性→c/c++一常規一附加包含目錄”選項中添加\extemklib\win64haaicrosoft和\extemkinclude;

在“項目→test屬性頁→配置屬性→鏈接器>常規→附加庫目錄”選項中添加\extem\lib和\extem\lib\win64hnicrosofl;

在“項目→test屬性頁→配置屬性→鏈接器>輸入>附加依賴項”選項中添加4個1ib文件,分別是libmx.1ib、libmat.1ib和libeng.1ib、mclmcrrt.1ib;

在“項目→test屬性頁→平臺”選項中選擇X64選項(只針對64位版本的MATLAB)。

2.1.2代碼編寫

(1)在testDlg.cpp文件中添加#include“engine.h”。

(2)在對話框界面上添加按鈕控件,為其增加消息響應函數,代碼如下所示:

2.1.3實驗結果

編譯運行程序,單擊確定按鈕會彈出窗口,其中顯示了正弦函數和余弦函數的直角坐標系圖形,如圖1所示。

該方法雖然功能全面、編碼簡單,但exe程序運行時需要MATLAB在后臺運行,脫離不了MATLAB環境,造成了運行速度慢、程序執行效率低的問題。

2.2實驗二調用DLL文件法

將用戶自定義的*m文件通過MATLAB自帶的編譯器編譯為DLL文件。在VS2010中建立基于對話框的MFC程序,然后調用DLL文件中的MATLAB函數。

2.2.1前期配置

(1)實驗一的全部前期配置步驟。

(3)配置MATLAB編譯環境并導出DLL文件。在MATLAB的Command window中輸人mbuild-setup命令,選擇VS2010編譯器,并輸入y進行確認;接下來,將Current Folder目錄修改為m文件所在的目錄,然后向Command window輸入mcc-w cpplib:xinQPCAfootball-T link:libxinQPCAfootball.m命令(本文使用的m文件名為xinQPCAfootball.m);完成以上步驟后,xinQPCAfootball.m所在目錄中會產生庫文件所需文件,將這些文件全部復制到MFC工程目錄下。

(4)設置工程目錄。在“test屬性頁一配置屬性→鏈接器→輸入→附加依賴項”選項中添加m文件編譯后生成的lib文件,如xinQPCAfootball.m文件編譯后生成的xinQPCAfootball.lib文件。

在“項目→test屬性頁→配置屬性→鏈接器→常規→附加庫目錄”選項中添加

2.2.2代碼編寫

在testDlg.cpp文件中添加頭文件#include”xinQPCAfootball.h”。添加成功之后打開它可以找到用戶在*m文件中編寫的MATLAB函數的接口,如下所示:

extem LIB_xinQPCAfootbalLCPP_API void MW-CALL-CONV xinQPCAfootball(int nargout,mwArray&f)

在對話框界面上添加按鈕控件并增加消息響應函數,在其中調用該接口函數,代碼如下所示:

void CtestDlg::OnBnClickedOk20

mwArray a(1100,100,mxDOUBLE_CLASS);

xinQPCAfootballlnitializeo;

xinQPCAfootball(NULL,a);

2.2.3實驗結果

編譯運行程序,單擊確定按鈕會彈出窗口,其內容為正弦函數和余弦函數的極坐標圖形,如圖2所示。

該方法生成的exe程序在運行時不需要啟動MATLAB,可以提高程序運行效率。但前期配置步驟較為復雜且易出錯。

2.3實驗三調用COM組件法

通過MATLAB中自帶的編譯器將用戶自定義的*m文件編譯為COM組件,在VS2010中建立基于對話框的MFC工程,然后用該程序調用COM組件實現協同編程。

2.3.1前期準備

(1)創建community.m文件,其內容為畫一個綠色的圓柱螺旋線,代碼如下所示:

(2)在MATLAB的Command window中輸入mbuild-setup命令,選擇VS2010編譯器的選項。

(3)在Command window中繼續輸入deploytool出現名為Deployment Project的界面,其中,Name和Location選項可以自定義,而Type選項需要選擇Generic COM component;點擊OK出現名為Generic COM Component的界面;點擊Add classes并輸入類名,如輸入類名為test;點擊Add files添加*m文件,如添加community.m文件。

點擊build圖標開始生成COM組件;生成成功后會在Location目錄下生成文件夾,在該文件夾的src文件夾中可以找到調用COM組件所需的3個文件:wmCOMtypes.h、test idl.h、testidl_i.c。

(4)建立基于對話框的MFC工程,在界面上添加按鈕并創建消息響應函數,將3個COM組件文件復制到該工程目錄下。

(5)在“項目→test屬性頁→配置屬性→C/c++→預編譯頭”選項中選擇“不適用預編譯頭”。

2.3.2代碼編寫

2.3.3實驗結果

編譯運行程序,單擊確定按鈕會彈出窗口,內容為一個圓柱螺旋線,如圖3所示。

使用COM組件的協同編程方法擁有較為簡單的前期配置步驟,并包含較為全面的MATLAB功能,也可以獨立于MATLAB環境運行,是一種較為理想的協同編程方法。

主站蜘蛛池模板: 最新亚洲人成网站在线观看| 久久久久国产一级毛片高清板| 国产日本欧美在线观看| 亚洲av日韩综合一区尤物| 999在线免费视频| 国产精品久久自在自线观看| 54pao国产成人免费视频| 狠狠亚洲五月天| 老司国产精品视频91| 国产青榴视频| 99视频精品全国免费品| 国产在线观看91精品亚瑟| 99久久无色码中文字幕| 亚洲天堂日韩在线| 午夜欧美理论2019理论| 人妻无码AⅤ中文字| 国产亚洲精品97AA片在线播放| 国产成人1024精品下载| 午夜无码一区二区三区在线app| 国产美女91视频| 亚洲成人播放| 国产精品无码影视久久久久久久 | 日韩欧美国产另类| 成人在线亚洲| 毛片免费观看视频| 天堂久久久久久中文字幕| 无码精品国产dvd在线观看9久 | 国产理论最新国产精品视频| 婷婷色一区二区三区| 国产成在线观看免费视频| 黄色在线网| 正在播放久久| 伊人成人在线视频| 青青极品在线| 99久久精品久久久久久婷婷| 国产精品丝袜视频| 国产第四页| 亚洲日本www| 欧美亚洲日韩中文| 亚洲精品无码高潮喷水A| 97青草最新免费精品视频| 成人国产小视频| 中文字幕人成人乱码亚洲电影| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲第一极品精品无码| 97久久免费视频| 午夜精品影院| 啊嗯不日本网站| 久热中文字幕在线| 亚洲视频免| 成人国产精品视频频| 亚洲毛片一级带毛片基地| 天天爽免费视频| 亚洲毛片一级带毛片基地| 亚洲天堂网视频| 成人福利在线看| 毛片国产精品完整版| 欧美午夜网站| 亚洲一区国色天香| 亚洲色图欧美| 国产精品999在线| 国产精品夜夜嗨视频免费视频| 人人91人人澡人人妻人人爽 | 在线观看无码av免费不卡网站| 国产成人调教在线视频| 久久国产精品麻豆系列| 九色综合视频网| 免费大黄网站在线观看| 亚洲欧美色中文字幕| 综合人妻久久一区二区精品| 激情综合网址| 国产国语一级毛片在线视频| 最近最新中文字幕免费的一页| 国产精品亚欧美一区二区| 久久精品人人做人人综合试看| 中国特黄美女一级视频| 日韩成人午夜| 国产精品视频白浆免费视频| 亚洲欧美精品一中文字幕| 四虎精品国产永久在线观看| 欧美精品在线免费| 伊人久久综在合线亚洲2019|