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.

主站蜘蛛池模板: 午夜成人在线视频| 欧美成人精品在线| 亚洲国产成人精品青青草原| 69免费在线视频| 美女啪啪无遮挡| 欧美精品在线视频观看| 久久综合丝袜长腿丝袜| 自偷自拍三级全三级视频 | 国产主播喷水| 精品无码日韩国产不卡av | 欧美在线导航| 青草娱乐极品免费视频| 狠狠躁天天躁夜夜躁婷婷| 中文字幕有乳无码| 日韩国产精品无码一区二区三区| 色综合天天视频在线观看| 韩日无码在线不卡| а∨天堂一区中文字幕| 久久精品国产国语对白| 好吊色国产欧美日韩免费观看| 久久免费看片| 中文字幕在线看| 欧美另类视频一区二区三区| 国产午夜福利在线小视频| 精品欧美一区二区三区久久久| 热99精品视频| 中文字幕在线免费看| 久久无码高潮喷水| 日本a级免费| 国产av色站网站| 青青久久91| 国精品91人妻无码一区二区三区| 一级毛片免费的| 亚洲激情99| 欧美亚洲国产一区| 国产高清不卡| 日韩高清成人| 国产av一码二码三码无码| 永久毛片在线播| 亚洲美女久久| 欧美精品导航| 欧美va亚洲va香蕉在线| 精品国产自在在线在线观看| 国产极品美女在线| 国产日韩欧美中文| 一级香蕉视频在线观看| 国产成人做受免费视频| 欧美色综合网站| 国产极品美女在线观看| 99ri国产在线| 亚洲日韩欧美在线观看| 亚洲大学生视频在线播放| 国产激情影院| 亚洲成a人片| 国产精品第| 亚洲成网站| 日本亚洲国产一区二区三区| 国产在线专区| 91亚瑟视频| 成人看片欧美一区二区| 国产成人免费观看在线视频| 一本二本三本不卡无码| 亚洲第一黄片大全| 亚洲精品图区| 国产白丝av| 成人亚洲视频| 亚洲成人在线免费观看| 久久久精品无码一二三区| 中文字幕欧美日韩高清| 日韩 欧美 小说 综合网 另类| 久久久受www免费人成| 黄网站欧美内射| 亚洲天堂伊人| 久久免费精品琪琪| 欧美综合成人| 国产欧美综合在线观看第七页| 中日无码在线观看| 无码区日韩专区免费系列| 国产亚洲视频播放9000| 精品国产电影久久九九| 成人国产三级在线播放| 欧美激情第一欧美在线|