设为首页 加入收藏

TOP

Matlab代码转C++—— mwArray
2017-06-08 10:22:32 】 浏览:2309
Tags:Matlab 代码 mwArray

本文主要介绍: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类型有:

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);

该过程比较简单。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇演练:创建和使用静态库 (C++) 下一篇一道C++笔试题的解读

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目