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

基于MATLAB編譯器的VC與MATLAB混合編程

2009-04-29 00:00:00遙,劉自偉,劉春菊
電腦知識與技術 2009年33期

摘要:該文介紹了如何利用Matlab7.0的編譯器實現VC與Matlab聯合編程。并給出具體實例,利用Matlab編譯器在VC中實現層次聚類分析。

關鍵詞:VC;Matlab;Matlab編譯器;層次聚類分析

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2009)33-9599-02

Based on MATLAB and the MATLAB Compiler VC Hybrid Programming

JIANG Yao, LIU Zi-wei, LIU Chun-ju

(School of Computer Science and Technology, Southwest China University of Technology, Mianyang 621000, China)

Abstract: How to use Matlab Compiler for VC and Matlab joint programming is described in this article. Using Matlab compiler to implement hierarchical clustering analysis in VC as a detailed example is introducted.

Key words:VC; Matlab; Matlab compiler; hierarchical cluster analysis

Matlab是一種應用領域廣泛的工具軟件。但是,它強大的功能只能在其提供的平臺下使用,很難直接應用于軟件開發,這大大限制了Matlab的應用。而VC++由于其豐富得人機界面,高效的執行效率已經成為基于Windows平臺下開發商業軟件的必備工具。Matlab編譯器的出現可以使VC++與Matlab 完美的結合,發揮各自的優勢。

1 Matlab編譯器的使用

1.1 Matlab Compiler(Matlab編譯器)

Matlab Compiler是Matlab自帶的一個編譯器,它能將M文件轉化成C、C++或p等各種類型的源代碼,并根據需要生成可執行文件、lib文件(庫文件)、dll文件或S函數文件等。由于M文件可以用編譯器轉化成為C 或C++源代碼, 所以該種方式的調用能脫離Matlab平臺,甚至可以在沒有安裝Matlab 的機器上運行。但是Matlab 編譯器只能編譯函數M文件,不能編譯腳本M文件。但是我們通過簡單的修改,就可以把腳本M文件轉變成為函數M文件。這種方法簡單又可靠。

1.2 在VC中使用Matlab Compiler

安裝matlab的同時也安裝了Matlab Compiler,但要實現其功能,還要進行Matlab 編譯器和VC++6.0 集成開發環境的設置。啟動matalb7.0,在命令窗口中輸入mex-setup回車按照提示,根據實際情況進行設置,該文選擇的是VC++6.0。然后就可以用Matlab 編譯器來處理需要調用的函數M文件,在你要處理的M文件所在目錄輸入:

mcc-W cpplib: dllname-T link:lib filename.m

其中dllname 為生成的dll文件的名稱,自己可以按照習慣定義,filename.m為要編譯的M文件名回車,那么會在當前目錄下生成一系列的文件,其中 dllname.dll(動態鏈接庫文件),dllname.ctf(CTF文件),dllname.h(C++頭文件),dllname.lib(引入庫文件)是我們必須的。其余文件是、dllname.cpp(C++源文件)和mccExcludedFiles.log(日志文件)等。

同時,在VC++6.0中也要進行相應的設置,添加include 與Library目錄。新建一個工程,VC菜單Tools—>Options—>Directories—>Show directories for: Include files 添加:

\\Extern\\Include

Tools—>Options—>Directories—>Show directories for: Library 添加:

\\Extern\\Lib\\Win32\\Microsoft\\msvc60.

2 基于Matlab編譯器的VC與Matlab混合編程實現層次聚類分析

2.1 創造M源文件

新建M文件,文件名為cluster,在文件中輸入如下:

function m=cluster(x)%函數名

m=pdist(x);%默認使用最小距離作為對象間距離

squareform(m);%將各對象間的距離組成距離矩陣

n=linkage(m);%對象距離排列

dendrogram(n);%可視化聚類結果

2.2 使用Matlab編譯器生成動態鏈接庫

在Matlab Command Window 輸入如下命令:

mcc-W cpplib:libcluster-T link:lib cluster.m

在當前文件夾中會出現以下文件:libcluster.dll,libcluster.lib,libcluster.ctf,libcluster.h,libcluster.cpp,mccExcludedFiles.log以及其他自動生成的文件。

2.3 在VC中調用動態鏈接庫

在VC中創建一個對話框工程,名稱為Test。設計一個簡單的對話框如圖1。

將Matlab編譯器生成的libcluster.dll,libcluster.lib,libcluster.ctf,libcluster.h復制到工程目錄中。將頭文件加入到工程中,并在對話框主cpp文件中寫入#include \"libcluster.h\"。

在構造函數中調用初始化函數mclInitializeApplication(NULL,0)(該函數的作用是設置了一個全局的MCR 狀態, 并且構建MCR 實例),libclusterInitialize()(初始化動態鏈接庫)。代碼如下:

if(!mclInitializeApplication(NULL,0))//初始化應用

{MessageBox(\"Could not initialize the application.\\");

exit(1);}

if (!libclusterInitialize())//初始化庫

{MessageBox(\"Could not initialize the library.\\");

exit(1);}

在按鈕“聚類測試”的響應函數中添加如下代碼:

void CTestDlg::OnTEST()

{mwArray X(5,2,mxDOUBLE_CLASS);//創建5行2列的Matlab矩陣對象

mwArray Y(5,5,mxDOUBLE_CLASS);

double x[] = {1,2,3,4,5,6,7,8,8,0};//創建測試數組

double m[25] = {0};

X.SetData(x,10);// 給輸入 mwArray 對象賦值

cluster(1,Y,X);//執行聚類函數,第一個參數是輸出參數的個數

Y.GetData(m,25);//取出結果

libclusterTerminate();//釋放鏈接庫

mclTerminateApplication();//釋放應用資源}

程序運行結果如下。

由于GetData()函數是以列為單位對矩陣進行賦值,所以上述結果為(1,6),(2,7),(3,8),(4,8),(5,0)5個對象進行的層次聚類的結果。

3 總結

通過以上方式,很好的實現了VC與Matlab的聯合編程,避免了使用大量復雜代碼才能在VC中實現層次聚類,使得兩個軟件可以同時發揮各自優點,更大地方便了我們的軟件開發。

參考文獻:

[1] Han Jiawei,Kamber M.Data Mining Concepts and Techniques[M].Beijing:China Machine Press,2007:30-65.

[2] 陳永超,李漢強.MATLAB7.0與VC6.0的接口技術[J].電腦知識與技術,2006(2):66-67.

[3] 飛思科技產品研發中心.Matlab7基礎與提高[M].北京:電子工業出版社,2005.

主站蜘蛛池模板: 天堂中文在线资源| 极品尤物av美乳在线观看| 精品福利视频网| 一级毛片在线免费看| 久草中文网| 成人av专区精品无码国产| 久久一本精品久久久ー99| 欧美日本在线播放| 国产视频一区二区在线观看| 亚洲国产中文欧美在线人成大黄瓜 | 国产黄网站在线观看| 精品黑人一区二区三区| 亚洲美女高潮久久久久久久| 国产午夜看片| 蜜桃视频一区二区| 色综合天天综合中文网| 亚洲色图另类| 亚洲女同欧美在线| 国产色爱av资源综合区| 国产激情在线视频| 亚洲欧洲日韩综合| 国产爽爽视频| 亚洲精品在线影院| 99999久久久久久亚洲| 青草视频久久| 国产精品视频白浆免费视频| 98超碰在线观看| 免费中文字幕一级毛片| 国产精品免费露脸视频| 国产另类视频| 另类欧美日韩| 91网在线| 亚洲高清日韩heyzo| 免费无码网站| 青青草原国产| 国产视频久久久久| 精品一区二区三区四区五区| 国产精品嫩草影院视频| 亚洲国产成人精品青青草原| 操国产美女| 在线观看的黄网| 亚洲日本中文字幕乱码中文| 中文字幕人妻无码系列第三区| 伊人中文网| 中日无码在线观看| 亚洲综合香蕉| 国产在线自在拍91精品黑人| 四虎成人在线视频| 无码免费视频| 久久这里只有精品66| 99精品影院| 国产精品亚洲片在线va| 在线精品亚洲国产| 激情网址在线观看| 亚洲欧洲国产成人综合不卡| 欧美第九页| 日韩人妻少妇一区二区| 免费观看亚洲人成网站| 91丨九色丨首页在线播放| 国产91久久久久久| 国产精品片在线观看手机版| 成人免费一级片| 免费精品一区二区h| 国产99视频精品免费视频7| 亚洲日韩精品伊甸| 国产一区二区三区精品欧美日韩| 国产浮力第一页永久地址 | 日本人妻一区二区三区不卡影院| 波多野结衣无码视频在线观看| 国产一二三区视频| 女人18毛片水真多国产| 五月天天天色| 欧美在线视频不卡| 99久久亚洲综合精品TS| 亚洲国产成人自拍| 精品一区二区三区四区五区| 熟妇丰满人妻av无码区| 欧美成人在线免费| 成人综合久久综合| 国产97视频在线| 国产屁屁影院| 草草影院国产第一页|