C#調(diào)用Matlab生成的dll方法的詳細說明
其實整個過程比較簡單,但是需要心細一點。
需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安裝一個MATLAB Compiler Runtime,這個文件(MCRInstall.exe)在安裝完MATLAB之后就會在安裝文件夾下存在,需要搜索一下(因為不同版本的MATLAB可能存放位置不同),把它安裝一下就OK了。
接下來在MATLAB中寫一個m文件,當然是一個函數(shù)啦。然后在matlab命令行下運行deploytool,在圖形界面里選.net組件,然后進入一個工程目錄的界面,新建工程,工程的名字就是.net組件的名字(例如sinfit),在其下面的目錄表示.net類名(例如sinfit),在類名上點右鍵"Add File...",把Matlab的.m函數(shù)文件(例如sinfit.m)選進去。最后進行編譯(Build the project),生成的目錄下有以工程名命名的dll文件(例如sinfit.dll)。OK,dll生成好了。
接下來打開VS,導(dǎo)入兩個dll,一個前面生成的那個dll,一個是<matlabroot>/dotnetbuilder/bin/win32/v2.0/mwarray.dll(如果找不到就搜一下)。然后在工程里加入下面的引用:
using MathWorks.MATLAB.NET.Arrays;
using MathWorks.MATLAB.NET.Utility;
using sinfit;
OK,可以用了,用法是實例化一個sinfit的對象,然后調(diào)用里面的matlab函數(shù),不過有一個問題需要注意的是,matlab的輸入和輸出數(shù)據(jù)都是矩陣,很特殊,在.net中叫做MWArray,它還有一個子類叫做MWNumericArray,它們的使用方法簡單說明如下:
創(chuàng)建一個MWNumericArray對象的方法:MWNumericArray para = new MWNumericArray(MWArrayComplexity.Real, 4, 2);這樣就創(chuàng)建了一個矩陣,如果要把它映射給一個double型的二維數(shù)組,則需要創(chuàng)建數(shù)組double[,] temp = new double[2, 4];這個地方就要注意了,正好反過來。然后如果是MWNumericArray賦給double[,]的話可以采用MWNumericArray的ToArray方法,如double[,] paras = (double[,])para.ToArray(MWArrayComponent.Real);其中para是MWNumericArray對象。如果是double[,]賦給MWNumericArray的話,那就直接賦值就OK了。
相關(guān)文章
silverlight實現(xiàn)圖片局部放大效果的方法
這篇文章主要介紹了silverlight實現(xiàn)圖片局部放大效果的方法,結(jié)合實例形式分析了silverlight針對圖片屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-03-03windows下C#定時管理器框架Task.MainForm詳解
這篇文章主要為大家詳細介紹了windows下C#定時管理器框架Task.MainForm的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06C#調(diào)用mmpeg進行各種視頻轉(zhuǎn)換的類實例
這篇文章主要介紹了C#調(diào)用mmpeg進行各種視頻轉(zhuǎn)換的類,實例分析了C#調(diào)用mmpeg操作視頻文件的技巧,非常具有實用價值,需要的朋友可以參考下2015-03-03C#創(chuàng)建SQLite控制臺應(yīng)用程序詳解
這篇文章主要為大家詳細介紹了C#創(chuàng)建SQLite控制臺應(yīng)用程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07