Matlab⾼级教程_第⼆篇:关于MATLAB转C#过程中MWArray到
C#数组,C#数。。。
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 } };
matlab二进制字符串转数组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}。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。