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

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

ID:11606476

大?。?92.46 KB

頁數(shù):11頁

時(shí)間:2018-07-12

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

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

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

2、

3、

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

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

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

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

8、調(diào)用我們用matlab編寫的函數(shù)了。2.1.3函數(shù)調(diào)用函數(shù)調(diào)用前必須注意:(1)將c#的參數(shù)輸入到matlab函數(shù)時(shí),要將參數(shù)轉(zhuǎn)化為matlab的參數(shù)形式,通常是MWArray類型。(2)matlab返回的參數(shù),也要轉(zhuǎn)化為c#用的類型,比如數(shù)組或者數(shù)值類型。下面是關(guān)于(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變量,則在前面加上類型轉(zhuǎn)換如:(MWNumericArray)進(jìn)行強(qiáng)制轉(zhuǎn)換??傊?,MWArray是總類型,其它的以MW開頭,以Array結(jié)尾的變量類型都可以直接對(duì)它進(jìn)行賦值或取值。M類型到C++/C#數(shù)據(jù)類型MWArrayM類型,它是M文件的編譯后內(nèi)部的標(biāo)準(zhǔn)類型,一切C++/C#類型都要最終轉(zhuǎn)換成此類型,方可作為參數(shù)調(diào)用M語言函數(shù)。MWCharArrayM的字符串類型,使用它可以將M中的字

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

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

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

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