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

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

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

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

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

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

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

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

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

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

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

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

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

M文件如何接收和返回?
function x=test(h,d) //接收兩個(gè)參數(shù),返回一個(gè)
function [x1,x2]=test(h,d) //返回?cái)?shù)組
________________________________________
以上為.Net方式連接,以下為COM方式連接(編譯速度而言.net的方式要快上很多,而且似乎比較穩(wěn)定)
matlab編譯工作
- mbuild -setup
- deploytool,Matlab Builder for .net,Generic COM Component
- 添加m函數(shù)文件(eg: myfunc.m),改類(lèi)名(eg: myComClass),build
注冊(cè)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返回的兩個(gè)參數(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é)的一些思路,拿出來(lái)與大家共享。不對(duì)之處,請(qǐng)留言說(shuō)明。
版本:Matlab R2007b ,Visual Studio 2005
C++/C#數(shù)據(jù)類(lèi)型到M類(lèi)型
此方向轉(zhuǎn)換十分簡(jiǎn)單。
如果C++/C#數(shù)據(jù)不是數(shù)組,
• 直接將值傳遞給已經(jīng)初始化的MWArray數(shù)組中的成員
• 直接將數(shù)據(jù)類(lèi)型賦值給已經(jīng)初始化的MWNumericArray變量。
• 直接將字符串類(lèi)賦值給已經(jīng)初始化的MWCharArray變量。
如果是數(shù)組類(lèi)型:
• 直接賦值給MWNumericArray變量;
• 賦值給MWArray變量,則在前面加上類(lèi)型轉(zhuǎn)換如:(MWNumericArray)進(jìn)行強(qiáng)制轉(zhuǎn)換。
總之,MWArray是總類(lèi)型,其它的以MW開(kāi)頭,以Array結(jié)尾的變量類(lèi)型都可以直接對(duì)它進(jìn)行賦值或取值。
M類(lèi)型到C++/C#數(shù)據(jù)類(lèi)型
MWArray
M類(lèi)型,它是M文件的編譯后內(nèi)部的標(biāo)準(zhǔn)類(lèi)型,一切C++/C#類(lèi)型都要最終轉(zhuǎn)換成此類(lèi)型,方可作為參數(shù)調(diào)用M語(yǔ)言函數(shù)。
MWCharArray
M的字符串類(lèi)型,使用它可以將M中的字符類(lèi)型轉(zhuǎn)換成C++/C#的字符串類(lèi)型。
MWNumericArray
MWNumericArray是MWArray與C#等語(yǔ)言的轉(zhuǎn)換中間類(lèi)型。
常用的轉(zhuǎn)換函數(shù):
① public Array ToArray(MWArrayComponent component);
將M類(lèi)型轉(zhuǎn)換成C#的Array類(lèi)型,然后可以直接轉(zhuǎn)換成其它類(lèi)型的數(shù)組。
② public byte ToScalarByte();
將M類(lèi)型轉(zhuǎn)換成C#的字節(jié)類(lèi)型;
③ public double ToScalarDouble();
將M類(lèi)型轉(zhuǎn)換成C#的雙精度類(lèi)型;
double temp = ((MWNumericArray)(mwArgout[0])).ToScalarDouble();
④ public float ToScalarFloat();
將M類(lèi)型轉(zhuǎn)換成C#的單精度類(lèi)型;
⑤ public int ToScalarInteger();
將M類(lèi)型轉(zhuǎn)換成C#的整型類(lèi)型;
⑥ public long ToScalarLong();
將M類(lèi)型轉(zhuǎn)換成C#的長(zhǎng)整C/C++/C#數(shù)據(jù)型類(lèi)型;
⑦ public short ToScalarShort();
將M類(lèi)型轉(zhuǎn)換成C#的短整型類(lèi)型;
⑧ public override string ToString();
將M類(lèi)型轉(zhuǎn)換成C#的字符串類(lèi)型;string arror = mwArgout[2].ToString();
⑨ public Array ToVector(MWArrayComponent component);
將M類(lèi)型轉(zhuǎn)換成C#的Array類(lèi)型,然后可以直接轉(zhuǎn)換成其它類(lèi)型的數(shù)組。
下面使用調(diào)試過(guò)的代碼示例表述①⑨兩個(gè)函數(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ù)類(lèi)型后,它們的維數(shù)均為從0開(kāi)始。

    應(yīng)用兔
    (103)應(yīng)用兔
    應(yīng)用兔是的新工具軟件,同時(shí)也是在官方上架的應(yīng)用。因此,應(yīng)用兔在保證設(shè)備與圖片的安全轉(zhuǎn)移的同時(shí),也為用戶提供安全便捷的軟件下載環(huán)境。應(yīng)用兔電腦版功能的軟件叫,其實(shí)有些網(wǎng)友就直接把叫作應(yīng)用兔電腦版,給出的解釋是上叫應(yīng)用兔,版上叫,估計(jì)用過(guò)的朋友就不少了吧無(wú)需越獄就能安裝各種游戲,軟件的工具兔子助手就是原來(lái)的,現(xiàn)在改名為兔子助手,功能更強(qiáng)大,使用更方便,快來(lái)下體驗(yàn)兔子助手電腦版,軟件管理一步到位,功能強(qiáng)大...更多>>
    • iTools兔子助手4.1.5.2 官方最新版

      01-12 / 28M

      推薦理由:iTools2016是一款ios設(shè)備管理工具,iTools具有管理軟件所特有的一些功能,要實(shí)現(xiàn)這些功能就需要對(duì)您電腦和移
    • 快用蘋(píng)果助手3.0.0.8 官方最新版

      10-31 / 29.0M

      推薦理由:國(guó)內(nèi)首款支持蘋(píng)果IOS應(yīng)用一鍵下載、安裝的PC端輔助工具“快用蘋(píng)果助手”正式發(fā)布,因其簡(jiǎn)單、安全、下載快速
    • iTools安卓模擬器v2.1.7.8 官方正式

      12-16 / 62.8M

      推薦理由:iTools安卓模擬器是itools兔子助手官方推出的一款安卓手游模擬器軟件,提到itools想必很多蘋(píng)果手機(jī)用戶都知
    • 快用蘋(píng)果助手20173.0.0.8 官方最新

      12-29 / 29.0M

      推薦理由:本版主要是提供設(shè)備管理功能:提供兩個(gè)途徑:一是快用蘋(píng)果助手客戶端;一是計(jì)算機(jī)(或我的電腦)中的蘋(píng)果設(shè)
    • 快用蘋(píng)果助手ipad/iphone版2.6.0.0

      05-15 / 9.8M

      推薦理由:史上最牛逼,最方便的Iphone管理工具,絕對(duì)不會(huì)白蘋(píng)果,讓您的蘋(píng)果設(shè)備得到更好的呵護(hù)。這是一款不要錢(qián),最省事
    • iTools 2016 mac版2.9.2 官方版

      10-02 / 4.9M

      推薦理由:蘋(píng)果設(shè)備管理工具2016(iToolsformac)是一款新的蘋(píng)果設(shè)備管理工具iTools,它只有700K、完全綠色、像iTunes一
    金山手機(jī)助手
    (130)金山手機(jī)助手
    金山手機(jī)助手是智能手機(jī)的資源獲取平臺(tái)。金山手機(jī)控幫助手機(jī)使用者用最省流量最快捷最方便最安全的方式獲取網(wǎng)絡(luò)資源,只需通過(guò)數(shù)據(jù)線的方式將手機(jī)連接至,便可以通過(guò)金山手機(jī)助手下載海量應(yīng)用,電子書(shū)視頻音樂(lè)圖片應(yīng)有盡有,游戲應(yīng)用軟件一應(yīng)俱全。還可以通過(guò)它進(jìn)行應(yīng)用管理任務(wù)管理,圖片視頻音樂(lè)等導(dǎo)入導(dǎo)出等等。功能特色金山手機(jī)控除了自有軟件游戲?qū)殠?kù),還提供超過(guò)萬(wàn)款手機(jī)資源,不花手機(jī)流量,一鍵下載安裝。金山手機(jī)控提供的...更多>>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

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

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