前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Matlab代码转C++(二) —— mwArray

Matlab代码转C++(二) —— mwArray

作者头像
用户7886150
修改2021-02-10 12:03:18
修改2021-02-10 12:03:18
2.1K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: C++ expm1()

本文主要介绍:matlab与C++结合的数据类型mwArray的一些基本知识,以及在C++中,如何对mwArray赋值,主要包括矩阵赋值和字符串赋值。 

首先,说明mwArray数据类型不同于mxArray,所以许多关于mxArray的用法,对mwArray不一定适用,具体区别见博文: 

http://www.cnblogs.com/kmliang/archive/2012/08/29/2662943.html  

一.矩阵赋值 

<1>mwArray 定义矩阵变量 

  mwArray  A(rows, cols, type)  

参数说明: 

   A       : 变量名 

   rows:行数 

   col   :列数 

   type :数t据类型 

type类型有: 

typedef enum

{

    mxUNKNOWN_CLASS = 0, //未知类型

    mxCELL_CLASS, //细胞类型

    mxSTRUCT_CLASS, //结构类型

    mxLOGICAL_CLASS, //布尔类型

    mxCHAR_CLASS,  //字符串类型

    mxVOID_CLASS,  //void类型

    mxDOUBLE_CLASS, 

    mxSINGLE_CLASS, //单精度浮点数

    mxINT8_CLASS, //

    mxUINT8_CLASS,

    mxINT16_CLASS,

    mxUINT16_CLASS,

    mxINT32_CLASS,

    mxUINT32_CLASS,

    mxINT64_CLASS,

    mxUINT64_CLASS,

    mxFUNCTION_CLASS, //函数类型

    mxOPAQUE_CLASS, //

    mxOBJECT_CLASS  //对象类型

}

 整体含义是:定义矩阵A,行数为:rows,列数为:cols,类型为:type 

注: 如果参数不是矩阵,只是一个数,令 rows=1,cols=1即可。 

<2>矩阵赋初值: 

int a[6] = {1,2,3,4,5,6}

mwArray A(2,3,mxINT32_CLASS);  

A.SetData(a,6); //第二个参数为要设置的数的个数,大小可设为rows*cols

注:该过程相当于把1*6的矩阵,转化为2*3的矩阵,matlab转化顺序是,先排第一列,由上到下为a[0] a[1],然后排第二列,由上到下为a[2] a[3],即转化后的A为: 

1     3      5 

2     4      6 

如果要使A为: 

1      2     3 

4      5     6 

需这样赋值: 

<pre name="code" class="cpp">int a[6] = {1,2,3,4,5,6}

mwArray A(3,2,mxINT32_CLASS);  //修改此处:行列数互换

A.SetData(a,6); //第二个参数为要设置的数的个数,大小可设为rows*cols

 此时生成的A为: 

1      4 

2      5 

3      6 

该矩阵转置之后,既可以达到所需形式,转置过程可以在matlab的.m文件中添加,先修改.m,然后在生成dll、lib、h文件。 

尤其是,在图像处理时,如果传递的矩阵为图像数据矩阵,要采用后一种方法赋值,否则,图像会严重变形失真。二、字符串赋值 

char str[5] = "abcd";

//或 CString str = "abcd"

mwArray mwA(str);

 该过程比较简单。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档