其實整個過程比較簡單,但是需要心細一點。
需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安裝一個MATLAB Compiler Runtime,這個文件(MCRInstall.exe)在安裝完MATLAB之后就會在安裝文件夾下存在,需要搜索一下(因為不同版本的MATLAB可能存放位置不同),把它安裝一下就OK了。
接下來在MATLAB中寫一個m文件,當然是一個函數啦。然后在matlab命令行下運行deploytool,在圖形界面里選.net組件,然后進入一個工程目錄的界面,新建工程,工程的名字就是.net組件的名字(例如sinfit),在其下面的目錄表示.net類名(例如sinfit),在類名上點右鍵"Add File...",把Matlab的.m函數文件(例如sinfit.m)選進去。最后進行編譯(Build the project),生成的目錄下有以工程名命名的dll文件(例如sinfit.dll)。OK,dll生成好了。
接下來打開VS,導入兩個dll,一個前面生成的那個dll,一個是<matlabroot>/dotnetbuilder/bin/win32/v2.0/mwarray.dll(如果找不到就搜一下)。然后在工程里加入下面的引用:
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using sinfit;
OK,可以用了,用法是實例化一個sinfit的對象,然后調用里面的matlab函數,不過有一個問題需要注意的是,matlab的輸入和輸出數據都是矩陣,很特殊,在.net中叫做MWArray,它還有一個子類叫做MWNumericArray,它們的使用方法簡單說明如下:
創建一個MWNumericArray對象的方法:MWNumericArray para = new MWNumericArray(MWArrayComplexity.Real, 4, 2);這樣就創建了一個矩陣,如果要把它映射給一個double型的二維數組,則需要創建數組double[,] temp = new double[2, 4];這個地方就要注意了,正好反過來。然后如果是MWNumericArray賦給double[,]的話可以采用MWNumericArray的ToArray方法,如double[,] paras = (double[,])para.ToArray(MWArrayComponent.Real);其中para是MWNumericArray對象。如果是double[,]賦給MWNumericArray的話,那就直接賦值就OK了。
新聞熱點
疑難解答