西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → C#與MATLAB之間傳遞參數(shù)

C#與MATLAB之間傳遞參數(shù)

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2011/1/1 22:10:06字體大。A-A+

作者:佚名點擊:856次評論:0次標(biāo)簽: MATLAB 傳遞參數(shù)

​XY蘋果助手mac版v2.5.19.3835 官方最新版
  • 類型:Mac其他軟件大。63.9M語言:中文 評分:10.0
  • 標(biāo)簽:
立即下載

 C#與MATLAB之間傳遞參數(shù)

MWNumericArray是MWArray和c#中數(shù)據(jù)的中間類, 怎么用?怎樣在C參數(shù)?

a.double型、int型等數(shù)值類型的變量傳遞
MWNumericArray i = null, result = mydouble;
i=4;
myClass myclass = new myClass(); //實例化
result = (MWNumericArray)myclass.myfunc(i);

b.字符串(需要用到MWCharArray和MWArray轉(zhuǎn)換)
MWCharArray FileName = myString;
MWNumericArray sensitivity;
sensitivity = (MWNumericArray)myClass.myAlgorithm((MWArray)

c.多個輸出參數(shù)組成的數(shù)組
MWNumericArray out_Arr = (MWNumericArray)out_Args[1]; //取的數(shù)組(matlab返回的數(shù)組下界是從1開始的)
取出數(shù)組中的一個元素值
mydouble=out_Arr[i].ToScalarDouble();
如上面例子ToScalarDouble一類的toXXXX等方法還有許多。

d.result.toArray可以把matlab返回的矩陣變成C#的n x m數(shù)組,eg:
double[,] csArray= (double[,])result.ToArray(MWArrayComponent

e.將數(shù)組傳入Matlab(和傳遞單個數(shù)值的方法一樣)
double[,] dbx = new double[2, 2] { { 1, 2 }, { 3, 4 } };
MWNumericArray x=dbx;
myclass.picture(x);
________________________________________

M文件如何接收和返回?
function x=test(h,d) //接收兩個參數(shù),返回一個
function [x1,x2]=test(h,d) //返回數(shù)組
________________________________________
以上為.Net方式連接,以下為COM方式連接(編譯速度而言.net的方式要快上很多,而且似乎比較穩(wěn)定)
matlab編譯工作
- mbuild -setup
- deploytool,Matlab Builder for .net,Generic COM Component
- 添加m函數(shù)文件(eg: myfunc.m),改類名(eg: myComClass),build
注冊dll
regsvr32 myCom.dll
regsvr32 mwcomutil.dll
VS2005調(diào)用:
- Reference加Com控件
- 調(diào)用示例
double[,] arr = null;
object in_a, out_a;
in_a = 500;
out_a = arr1;
myCom.myComClass mc = new myCom.myComClass();
mc.myfunc(1, ref out_a, in_a);
________________________________________

小例子:(提取matlab返回的兩個參數(shù)并轉(zhuǎn)化為C#的矩陣)
Code
testz.testzclass st = new testz.testzclass();
MWArray[] max = st.testz(2);
MWNumericArray x1 = (MWNumericArray)max[0];
MWNumericArray x2 = (MWNumericArray)max[1];
double[,] location1 = (double[,])x1.ToArray(MWArrayComponent.Real);
double[,] location2 = (double[,])x2.ToArray(MWArrayComponent.Real);
label1.Text = location1[1,2].ToString();
其中的M文件:
Code
function [x1,x2]=testz()
x1=[1 2 3;
4 5 6;
7 8 9;];
x2=[9 8 7;
6 5 4;
3 2 1;];

另一篇:
以下是本人編程中總結(jié)的一些思路,拿出來與大家共享。不對之處,請留言說明。
版本:Matlab R2007b ,Visual Studio 2005
C++/C#數(shù)據(jù)類型到M類型
此方向轉(zhuǎn)換十分簡單。
如果C++/C#數(shù)據(jù)不是數(shù)組,
• 直接將值傳遞給已經(jīng)初始化的MWArray數(shù)組中的成員
• 直接將數(shù)據(jù)類型賦值給已經(jīng)初始化的MWNumericArray變量。
• 直接將字符串類賦值給已經(jīng)初始化的MWCharArray變量。
如果是數(shù)組類型:
• 直接賦值給MWNumericArray變量;
• 賦值給MWArray變量,則在前面加上類型轉(zhuǎn)換如:(MWNumericArray)進行強制轉(zhuǎn)換。
總之,MWArray是總類型,其它的以MW開頭,以Array結(jié)尾的變量類型都可以直接對它進行賦值或取值。
M類型到C++/C#數(shù)據(jù)類型
MWArray
M類型,它是M文件的編譯后內(nèi)部的標(biāo)準(zhǔn)類型,一切C++/C#類型都要最終轉(zhuǎn)換成此類型,方可作為參數(shù)調(diào)用M語言函數(shù)。
MWCharArray
M的字符串類型,使用它可以將M中的字符類型轉(zhuǎn)換成C++/C#的字符串類型。
MWNumericArray
MWNumericArray是MWArray與C#等語言的轉(zhuǎn)換中間類型。
常用的轉(zhuǎn)換函數(shù):
① public Array ToArray(MWArrayComponent component);
將M類型轉(zhuǎn)換成C#的Array類型,然后可以直接轉(zhuǎn)換成其它類型的數(shù)組。
② public byte ToScalarByte();
將M類型轉(zhuǎn)換成C#的字節(jié)類型;
③ public double ToScalarDouble();
將M類型轉(zhuǎn)換成C#的雙精度類型;
double temp = ((MWNumericArray)(mwArgout[0])).ToScalarDouble();
④ public float ToScalarFloat();
將M類型轉(zhuǎn)換成C#的單精度類型;
⑤ public int ToScalarInteger();
將M類型轉(zhuǎn)換成C#的整型類型;
⑥ public long ToScalarLong();
將M類型轉(zhuǎn)換成C#的長整C/C++/C#數(shù)據(jù)型類型;
⑦ public short ToScalarShort();
將M類型轉(zhuǎn)換成C#的短整型類型;
⑧ public override string ToString();
將M類型轉(zhuǎn)換成C#的字符串類型;string arror = mwArgout[2].ToString();
⑨ public Array ToVector(MWArrayComponent component);
將M類型轉(zhuǎn)換成C#的Array類型,然后可以直接轉(zhuǎn)換成其它類型的數(shù)組。
下面使用調(diào)試過的代碼示例表述①⑨兩個函數(shù)的區(qū)別:

double[,] Temp1 = new double[1,3];
Temp1=
(double[,])((MWNumericArray)mwArgout[1]).ToArray(MWArrayComponent.Real);

double[] s1 = new double[2];
s1 =
(double[])((MWNumericArray)mwArgout[1]).ToVector(MWArrayComponent.Real);
從以上代碼可以看出:函數(shù)①得到了二維數(shù)組,而⑨則是得到了一維數(shù)組。轉(zhuǎn)換成C++/C#數(shù)據(jù)類型后,它們的維數(shù)均為從0開始。

    應(yīng)用兔
    (103)應(yīng)用兔
    應(yīng)用兔是的新工具軟件,同時也是在官方上架的應(yīng)用。因此,應(yīng)用兔在保證設(shè)備與圖片的安全轉(zhuǎn)移的同時,也為用戶提供安全便捷的軟件下載環(huán)境。應(yīng)用兔電腦版功能的軟件叫,其實有些網(wǎng)友就直接把叫作應(yīng)用兔電腦版,給出的解釋是上叫應(yīng)用兔,版上叫,估計用過的朋友就不少了吧無需越獄就能安裝各種游戲,軟件的工具兔子助手就是原來的,現(xiàn)在改名為兔子助手,功能更強大,使用更方便,快來下體驗兔子助手電腦版,軟件管理一步到位,功能強大...更多>>
    金山手機助手
    (130)金山手機助手
    金山手機助手是智能手機的資源獲取平臺。金山手機控幫助手機使用者用最省流量最快捷最方便最安全的方式獲取網(wǎng)絡(luò)資源,只需通過數(shù)據(jù)線的方式將手機連接至,便可以通過金山手機助手下載海量應(yīng)用,電子書視頻音樂圖片應(yīng)有盡有,游戲應(yīng)用軟件一應(yīng)俱全。還可以通過它進行應(yīng)用管理任務(wù)管理,圖片視頻音樂等導(dǎo)入導(dǎo)出等等。功能特色金山手機控除了自有軟件游戲?qū)殠,還提供超過萬款手機資源,不花手機流量,一鍵下載安裝。金山手機控提供的...更多>>
    • 金山手機助手2015.11.4.964 官方正

      11-09 / 66.1M

      推薦理由:金山手機助手愿意成為每一個用戶的貼心助手,找靠譜應(yīng)用,上金山手機助手!找熱門游戲,上金山手機助手!正
    • 金山手機助手蘋果版1.0.0.4 官方版

      03-06 / 3.6M

      推薦理由:金山隆重推出金山手機助手“蘋果版”!果斷的拋棄“哀疼死”吧,不管你是iPhone還是iPad,只要是蘋果設(shè)備,
    • 金山手機助手手機版v4.2.0 官方版

      01-30 / 2.6M

      推薦理由:金山手機助手手機版目前處于內(nèi)側(cè)間斷哦,不過想要體驗的親可以申請內(nèi)測邀請資格啦!官方介紹:金山手機助手
    • vivo手機助手電腦版V2.2.3.33 官方

      11-01 / 35.9M

      推薦理由:vivo手機助手是android智能手機的資源獲取平臺。提供海量的游戲、軟件、音樂、小說、視頻、圖片,通過它輕松
    • 華為手機助手(HiSuite)V5.0.1.301

      01-12 / 31.5M

      推薦理由:華為手機助手式華為為其旗下智能手機推出的一款手機管理工具,可以幫助華為手機用戶進行管理手機數(shù)據(jù)聯(lián)系人
    • 360手機助手電腦版 for Android2.5

      01-20 / 18.1M

      推薦理由:360手機助手的2.0版正式發(fā)布啦~在閉關(guān)的這段日子里,我們不但為她換了身綠色的新衣服,加快了她的啟動速度

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)