MATLAB.NET混合编程之四~~从Matlab向C#的数据类型转化

4 篇文章 0 订阅
3 篇文章 0 订阅

上一篇《MATLAB.NET混合编程之三~~从C#向Matlab的数据类型转化》中已经详细介绍了从C#向Matlab传递数据时使用的方法,那么Matlab计算完成后在C#中应该怎么获取它的计算数据呢?

需要遵循两个基本步骤:

  1. 弄清楚Matlab函数传回的数据到底是什么格式?struct?cell?char?抑或是numeric?
  2. 将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();

ToScalar****这类函数是MWNumericArray内部数据转化为C#中数字类的数据类型所使用的方法,字面意思就是转化为某标量类型。

  • 从MWArray到字符串

先从MWArray转化为MWCharArray,然后直接给string赋值

MWArray mwArr = "c# and matlab";
MWCharArray arr = (MWCharArray)mwArr;
string str = arr.ToString();
  • 从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;

或者直接

double[,] dArr = (double[,])mwArr.ToArray();

对于一维数组,还有另外的方法可以使用:

MWArray mwArr2 = (MWNumericArray)new double[] { 1.1, 2.2 };
Array dArr3 = ((MWNumericArray)mwArr2).ToVector(MWArrayComponent.Real);
double[] arr = (double[])dArr3;

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}

参考资料:

  1. MWArrayAPI HELP
  2. Matlab中文论坛
  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值