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}。

Matlab高级教程_第二篇:关于MATLAB转C#过程中MWArray到C#数组,C#数组到MWArray相互转换的更多相关文章

  1. Matlab高级教程_第二篇:MATLAB和C#对应数据类型的讲解(多讲一点儿C#的矩阵运算)

    1. MATLAB对应C#的数据类型主要在引入的父类库MWArray当中.有如下对应规则 .NET TYPE MWArrayTYPE MATLAB Type System.Double MWNumer ...

  2. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-2

    1 MATLAB并行计算-从个人桌面到远程集群和云(陈伟/魏奋)视频摘录笔记 https://cn.mathworks.com/videos/parallel-computing-with-matla ...

  3. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-1

    1 更高级的算法牵扯到更多重的循环和复杂的计算,尤其是现在人工智能的算法尤其如此.有些历史知识的人能够了解到,人工智能的很多基本算法其实近百年之前就有了,但是当时的计算机技术达不到去实现这些算法的要求 ...

  4. Matlab高级教程_第二篇:Matlab相见恨晚的模块_01_定时器

    MATLAB的定时器功能(timer函数): 1 从MATLAB6.5版本开始,MATLAB开始支持定时器.相对于传统的pause函数来说,定时器要强大的多,不仅可以等效实现pause的功能,还可以显 ...

  5. Matlab高级教程_第二篇:MATLAB和C#一些常用的矩阵运算方法的转换

    1.相关方法已经生产引用,直接调用的结果如下: 2. 相关调用代码如下: using System; using System.Collections.Generic; using System.Li ...

  6. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-关于parfor的问题

    1 我们知道MATLAB支持并行运行一般有四种模式: 第一种模式:本机调用多核CPU性能并行运算 第二种模式:本机调用GPU性能并行运算 第三种模式:多计算机组成集群,调用集群CPU性能并行运算 第四 ...

  7. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_并行运算-利用GPU并行执行MATLAB程序

    1 MATLAB原文: 如果所有你想使用的函数支持GPU,你能够使用gpuArray把输入的数据传输到GPU,也能够唤起gather命令把传输值GPU的数据回收. 2 通过gpuDevice命令观察当 ...

  8. Matlab高级教程_第二篇:Matlab相见恨晚的模块_02_全局变量的妙用_遍历穿透

    1 比如我这边写了一个函数,这个函数中有一个变量作为参数,给定这个参数一个值,然后这个函数返回给我一个值.但是,我写这函数的时候,这个传参我不写到函数里面.可以通过全局变量的方式进行在外部穿透遍历. ...

  9. Matlab高级教程_第一篇:Matlab基础知识提炼_01

    第一篇:Matlab基础知识提炼: 这一篇主要用系统和提炼性的语言对Matlab基础知识进行总结,主要适用于有语言基础的学习者.尽量不讲废话. 第一部分:Matlab是什么? 1 Matlab是Mat ...

  10. Matlab高级教程_第二篇:关于MATLAB转C#过程中遇到输出两组参数的问题

    1. 在matlab的m函数很可能遇到原函数[a,b] = func(a); 这样的两个输出参数. 2. 在观察C#生成后定义中我们发现: public MWArray HP(); public MW ...

随机推荐

  1. __getattr__在python2.x与python3.x中的区别及其对属性截取与代理类的影响

    python2.x中的新类型类(New-style class)与python3.x的类一致,均继承object类,而不继承object的类称为经典类(classic class),而对于这两种类,一 ...

  2. 实验吧web-难-认真一点!(布尔盲注,py脚本)

    也可用bp进行爆破,这里用py脚本. 打看网页输入1,显示You are in,输入2,显示You are not in,是个布尔注入. 然后看看过滤了什么. sql注入没有过滤:--+.or sql ...

  3. 算法设计和分析(Prim算法构建最小生成树)

    问题: 给定无向图G(N,M)表明图G有N个顶点,M条边,通过Prim算法构造一个最小生成树 分析: 算法流程: 构造好的最小生成树就是step6 运行代码: #include<cstdio&g ...

  4. SQL COOKBOOK SQL经典实例代码 笔记第一章代码

    -- SQL COOKBOOK CHAPTER1 -- 查看所有内容 select * from emp; -- 可以单列 select empno,ename,job,sal,mgr,hiredat ...

  5. Python logging模块 控制台、文件输出

    步骤 导入logging模块 设置level(此处是DEBUG) 添加文件handler和流handler import logging logger=logging.getLogger(__name ...

  6. 项目进度02-Day3

    ①今天做了什么? 数据库数据的重置.之前的用户类字段的补充.简单的平台信息查询 ②明天要做什么?   分类浏览和综合查询功能. ③遇到了什么问题? 出现问题:Parameter index out o ...

  7. mysql锁探究和实验

    如何保证数据并发访问的一致性.有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂. 表锁和行锁 mysql最显 ...

  8. C++ CreateInstance("ADODB.Connection");创建接口失败的解决方法

    数据库对象mssql2005sp3专业版: 一般数据引用该路径文件#import "c:\\program files\\common files\\system\\ado\\msado15 ...

  9. {转}Java 字符串分割三种方法

    http://www.chenwg.com/java/java-%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%88%86%E5%89%B2%E4%B8%89%E7%A7%8D%E6%9 ...

  10. Python 安装modules问题及import问题

    >>>modules问题 在学习Python的数据可视化时,安装了matplotlib,在安装完成后还特意在终端测试了一下,结果显示能正常import 但是在sublime Text ...