C#調(diào)用Matlab生成的dll方法的詳細(xì)說明
其實(shí)整個過程比較簡單,但是需要心細(xì)一點(diǎn)。
需要的工具:VS2005及以上版本,MATLAB2008B及以上版本,另外非常重要的需要安裝一個MATLAB Compiler Runtime,這個文件(MCRInstall.exe)在安裝完MATLAB之后就會在安裝文件夾下存在,需要搜索一下(因?yàn)椴煌姹镜腗ATLAB可能存放位置不同),把它安裝一下就OK了。
接下來在MATLAB中寫一個m文件,當(dāng)然是一個函數(shù)啦。然后在matlab命令行下運(yùn)行deploytool,在圖形界面里選.net組件,然后進(jìn)入一個工程目錄的界面,新建工程,工程的名字就是.net組件的名字(例如sinfit),在其下面的目錄表示.net類名(例如sinfit),在類名上點(diǎn)右鍵"Add File...",把Matlab的.m函數(shù)文件(例如sinfit.m)選進(jìn)去。最后進(jìn)行編譯(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,可以用了,用法是實(shí)例化一個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)文章
C#實(shí)現(xiàn)遞歸算法經(jīng)典實(shí)例
這篇文章主要為大家介紹了C#實(shí)現(xiàn)遞歸算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01C#讀取XML的CDATA節(jié)點(diǎn)內(nèi)容實(shí)例詳解
在本篇文章里小編給大家整理了關(guān)于C# 讀取XML的CDATA節(jié)點(diǎn)內(nèi)容的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。2019-09-09詳解C#如何使用重載方法實(shí)現(xiàn)不同類型數(shù)據(jù)的計(jì)算
這篇文章主要為大家詳細(xì)介紹了C#如何使用重載方法實(shí)現(xiàn)不同類型數(shù)據(jù)的計(jì)算,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02