Matlab高級教程_第二篇:關於MATLAB轉C#過程中MWArray到C#數組,C#數組到MWArray相互轉換


Matlab傳遞數據時使用的方法,那么Matlab計算完成后在C#中應該怎么獲取它的計算數據呢?

需要遵循兩個基本步驟:

弄清楚Matlab函數傳回的數據到底是什么格式?struct?cell?char?抑或是numeric?
將MWArray轉化為對應的MW****Array並從MW****Array中獲取所需的數據
如何傳遞數據
從MWArray到C#中的數字
MWNumericArray中的數據可以轉化為Byte、double、float、integer、long和short類型,一般常用的就是int和double兩種。

同樣使用舉例說明的方式來講解:

MWArray mwArr = (MWNumericArray)new int[] { 1, 2, 3, 4 };
MWNumericArray arr = (MWNumericArray)mwArr;
int a = arr[1, 1].ToScalarInteger();
double b = arr[1, 2].ToScalarDouble();
1
2
3
4
ToScalar****這類函數是MWNumericArray內部數據轉化為C#中數字類的數據類型所使用的方法,字面意思就是轉化為某標量類型。

從MWArray到字符串
先從MWArray轉化為MWCharArray,然后直接給string賦值

MWArray mwArr = "c# and matlab";
MWCharArray arr = (MWCharArray)mwArr;
string str = arr.ToString();
1
2
3
從MWArray到數組
先從MWArray轉化為MWNumericArray,然后在C#中進行類型轉化

對於二維數組:

MWArray mwArr = (MWNumericArray)new double[2, 2] { { 1.1, 2.2 }, { 3.3, 4.4 } };
Array arr = mwArr.ToArray();
double[,] dArr = (double[,])arr;
1
2
3
或者直接

double[,] dArr = (double[,])mwArr.ToArray();
1
對於一維數組,還有另外的方法可以使用:

MWArray mwArr2 = (MWNumericArray)new double[] { 1.1, 2.2 };
Array dArr3 = ((MWNumericArray)mwArr2).ToVector(MWArrayComponent.Real);
double[] arr = (double[])dArr3;
1
2
3
ToVector的參數MWArrayComponent.Real是指復數中的實部,與此相對的是MWArrayComponent.Imaginary,這個是虛部。如果二維數組使用上述方法轉化,會變成一維數組。new double[2, 2] { { 1.1, 2.2 }, { 3.3, 4.4 } }會變成new double[]{1.1,3.3,2.2,4.4}。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM