C#與MATLAB之間傳遞參數(shù)_第1頁
C#與MATLAB之間傳遞參數(shù)_第2頁
C#與MATLAB之間傳遞參數(shù)_第3頁
C#與MATLAB之間傳遞參數(shù)_第4頁
C#與MATLAB之間傳遞參數(shù)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C#與MATLAB之間傳遞參數(shù)MWNumericArray是MWArray和c#中數(shù)據(jù)的中間類,怎么用?怎樣在C#與matlab間傳遞參數(shù)?double型、int型等數(shù)值類型的變量傳遞MWNumericArrayi=null,result=mydouble;i=4;myClassmyclass=newmyClass();/實例化result=(MWNumericArray)myclass.myfunc(i);字符串(需要用到MWCharArray和MWArray轉換)MWCharArrayFileName=myString;MWNumericArraysensitivity;sensitivi

2、ty=(MWNumericArray)myClass.myAlgorithm(MWArray)FileName);多個輸出參數(shù)組成的數(shù)組MWNumericArrayout_Arr=(MWNumericArray)out_Args1;/取出第一個參數(shù)返回的數(shù)組(matlab返回的數(shù)組下界是從1開始的)取出數(shù)組中的一個元素值mydouble=out_Arri.ToScalarDouble();如上面例子ToScalarDouble一類的toXXXX等方法還有許多。result.toArray可以把matlab返回的矩陣變成C#的nxm數(shù)組,eg:double,csArray=(double,)re

3、sult.ToArray(MWArrayComponent.Real);將數(shù)組傳入Matlab(和傳遞單個數(shù)值的方法一樣)double,dbx=newdouble2,21,2,3,4;MWNumericArrayx=dbx;myclass.picture(x);M文件如何接收和返回?functionx=test(h,d)/接收兩個參數(shù),返回一個functionx1,x2=test(h,d)/返回數(shù)組以上為.Net方式連接,以下為COM方式連接(編譯速度而言.net的方式要快上很多,而且似乎比較穩(wěn)定)matlab編譯工作mbuild-setupdeploytool,MatlabB,Generic

4、COMComponent-添加m函數(shù)文件(eg:myfunc.m),改類名(eg:myComClass),build注冊dllregsvr32myCom.dllregsvr32mwcomutil.dllVS2005調用:Reference加Com控件調用示例double,arr=null;objectin_a,out_a;in_a=500;out_a=arr1;myCom.myComClassmc=newmyCom.myComClass();mc.myfunc(1,refout_a,in_a);小例子:(提取matlab返回的兩個參數(shù)并轉化為C#的矩陣)Codetestz.testzclass

5、st=newtestz.testzclass();MWArraymax=st.testz(2);MWNumericArrayx1=(MWNumericArray)max0;MWNumericArrayx2=(MWNumericArray)max1;double,location1=(double,)x1.ToArray(MWArrayComponent.Real);double,location2=(double,)x2.ToArray(MWArrayComponent.Real);label1.Text=location11,2.ToString();其中的M文件:Codefunctionx

6、1,x2=testz()x1=123;456;789;x2=987;654;321;另一篇:以下是本人編程中總結的一些思路,拿出來與大家共享。不對之處,請留言說明。版本:MatlabR2007b,VisualStudio2005C+/C#數(shù)據(jù)類型到M類型此方向轉換十分簡單。如果C+/C#數(shù)據(jù)不是數(shù)組,直接將值傳遞給已經初始化的MWArray數(shù)組中的成員直接將數(shù)據(jù)類型賦值給已經初始化的MWNumericArray變量。直接將字符串類賦值給已經初始化的MWCharArray變量。如果是數(shù)組類型:直接賦值給MWNumericArray變量;賦值給MWArray變量,則在前面加上類型轉換如:(MWNu

7、mericArray)進行強制轉換??傊琈WArray是總類型,其它的以MW開頭,以Array結尾的變量類型都可以直接對它進行賦值或取值。M類型到C+/C#數(shù)據(jù)類型MWArrayM類型,它是M文件的編譯后內部的標準類型,一切C+/C#類型都要最終轉換成此類型,方可作為參數(shù)調用M語言函數(shù)。MWCharArrayM的字符串類型,使用它可以將M中的字符類型轉換成C+/C#的字符串類型。MWNumericArrayMWNumericArray是MWArray與C#等語言的轉換中間類型。常用的轉換函數(shù):publicArrayToArray(MWArrayComponentcomponent);將M類型

8、轉換成C#的Array類型,然后可以直接轉換成其它類型的數(shù)組。publicbyteToScalarByte();將M類型轉換成C#的字節(jié)類型;publicdoubleToScalarDouble();將M類型轉換成C#的雙精度類型;doubletemp=(MWNumericArray)(mwArgout0).ToScalarDouble();publicfloatToScalarFloat();將M類型轉換成C#的單精度類型;publicintToScalarInteger();將M類型轉換成C#的整型類型;publiclongToScalarLong();將M類型轉換成C#的長整C/C+/C

9、#數(shù)據(jù)型類型;publicshortToScalarShort();將M類型轉換成C#的短整型類型;publicoverridestringToString();將M類型轉換成C#的字符串類型;stringarror=mwArgout2.ToString();publicArrayToVector(MWArrayComponentcomponent);將M類型轉換成C#的Array類型,然后可以直接轉換成其它類型的數(shù)組。下面使用調試過的代碼示例表述兩個函數(shù)的區(qū)別:double,Temp1=newdouble1,3;Temp1=(double,)(MWNumericArray)mwArgout1).ToArray(MWArrayComponent.Real);dou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論