c#調用matlab函數(shù)(混合編程)

c#調用matlab函數(shù)(混合編程)

ID:11606476

大?。?92.46 KB

頁數(shù):11頁

時間:2018-07-12

c#調用matlab函數(shù)(混合編程)_第1頁
c#調用matlab函數(shù)(混合編程)_第2頁
c#調用matlab函數(shù)(混合編程)_第3頁
c#調用matlab函數(shù)(混合編程)_第4頁
c#調用matlab函數(shù)(混合編程)_第5頁
資源描述:

《c#調用matlab函數(shù)(混合編程)》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。

1、第2部分實戰(zhàn)練習(自己做的)2.1c#調用matlab函數(shù)matlab版本2009b,c#版本vs2008.2.1.1matlab函數(shù)編譯成dll文件(1)首先編寫一個函數(shù)的m文件,如MatrixOpera表示兩個矩陣相加和相減。%--------------------------------------------------------function[addRlt,minusRlt]=MatrixOpera(a,b)%矩陣相加,相減[m1,n1]=size(a);[m2,n2]=size(b);ifm1~=m2

2、

3、

4、n1~=n2display('矩陣大小不相同')error('參數(shù)錯誤');endaddRlt=a+b;minusRlt=a-b;end%-----------------------------------------------------------兩個輸入?yún)?shù),兩個輸出參數(shù),并且都是矩陣形式(2)在matlab命令窗口輸入deploytool,彈出如下窗口或者點擊matlab的主菜單desktop→deploytool獲得如下面圖所示的窗口,然后在file→new→deploymentproject中點擊。獲得上圖

5、窗口,修改工程名稱和文件后綴名(必須是,.NetAssembly格式)修改(3)新建了一個叫matPrj的工程(它相當于c#中的命名空間namespace);然后給它增加class或類(它就是c#中的類),點[addclass]比如myMathClass;之后再給它添加方法(它就是函數(shù)了),點[addfiles],如下圖所示。本實例中給它添加了MatrixOpera等函數(shù)。方法class(4)完了之后就可以編譯了。編譯出來后需要一兩分鐘的時間。編譯(5)找到該工程存放的文件夾,從里面拷出matPrj.dll文件。同時還要從

6、G:ProgramFilesMATLABR2009btoolboxdotnetbuilderbinwin32v2.0拷貝出MWArray.dll和ManagedCPPAPI.netmodule。第二個文件必須要哦,否則可能會出錯。2.1.2c#添加matlab的dll引用(1)打開vs2008,新建一個窗體應用程序。(2)將剛才拷貝到的那3個文件一起放在vs工程(CallMatlabDllApp)的debug文件夾下面。然后右鍵下圖中的引用,選擇添加引用,彈出一個窗口,選擇其中的瀏覽頁面,分別添加matPr

7、j.dll文件和MWArray.dll文件。已經(jīng)添加了的引用右鍵,點添加引用(3)最后在前面,代碼的前面添加下面的命名空間即可。usingMathWorks.MATLAB.NET.Arrays;//在MWArray.dll,最常用的usingMathWorks.MATLAB.NET.Utility;//在MWArray.dll,最常用的usingmatPrj;//這個就是我們自己定義的,里面有matlab函數(shù)如果matlab函數(shù)復雜,還需要用到其他的空間,則視情況而定,自己憑經(jīng)驗添加。已經(jīng)添加了的引用至此,已經(jīng)可以利用c#

8、調用我們用matlab編寫的函數(shù)了。2.1.3函數(shù)調用函數(shù)調用前必須注意:(1)將c#的參數(shù)輸入到matlab函數(shù)時,要將參數(shù)轉化為matlab的參數(shù)形式,通常是MWArray類型。(2)matlab返回的參數(shù),也要轉化為c#用的類型,比如數(shù)組或者數(shù)值類型。下面是關于(1)和(2)的介紹,從別人那拷過來的,具體可參考http://apps.hi.baidu.com/share/detail/294982直接將值傳遞給已經(jīng)初始化的MWArray數(shù)組中的成員直接將數(shù)據(jù)類型賦值給已經(jīng)初始化的MWNumericArray變量。直接

9、將字符串類賦值給已經(jīng)初始化的MWCharArray變量。如果是數(shù)組類型:直接賦值給MWNumericArray變量;賦值給MWArray變量,則在前面加上類型轉換如:(MWNumericArray)進行強制轉換??傊琈WArray是總類型,其它的以MW開頭,以Array結尾的變量類型都可以直接對它進行賦值或取值。M類型到C++/C#數(shù)據(jù)類型MWArrayM類型,它是M文件的編譯后內(nèi)部的標準類型,一切C++/C#類型都要最終轉換成此類型,方可作為參數(shù)調用M語言函數(shù)。MWCharArrayM的字符串類型,使用它可以將M中的字

10、符類型轉換成C++/C#的字符串類型。MWNumericArrayMWNumericArray是MWArray與C#等語言的轉換中間類型。常用的轉換函數(shù):① publicArrayToArray(MWArrayComponentcomponent);將M類型轉換成C#的Array類型,然后可以直接轉換成

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。