欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Matlab代码转C++—— mwArray

程序员文章站 2022-12-10 14:53:57
本文主要介绍:matlab与C++结合的数据类型mwArray的一些基本知识,以及在C++中,如何对mwArray赋值,主要包括矩阵赋值和字符串赋值。 首先,说明mwArray数...

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

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

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

一.矩阵赋值

<1>mwArray 定义矩阵变量

mwArray A(rows, cols, type)

参数说明:

A : 变量名

rows:行数

col :列数

type :数t据类型

type类型有:

view plaincopy

typedefenum

{

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>矩阵赋初值:

view plaincopy

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

mwArrayA(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

需这样赋值:

view plaincopy

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

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

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

此时生成的A为:

1 4

2 5

3 6

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

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

view plaincopy

charstr[5]="abcd";

//或CStringstr="abcd"

mwArraymwA(str);

该过程比较简单。