1、mwArray转换成mwString
- mwArray result;
- mwString ss = result.ToString();
2、mwString转换成string
- mwString ss;
- const char* ass = ss.operator const char* ();
- qDebug() << ass;
3、mwArray结构体数据读取
- 示例一:
- mwArray surface_data;
- mwString peak = surface_data(2).ToString();
-
-
- 示例二:
- mwArray surface_data;
- mwString peak = surface_data(2)(1).ToString();
4、矩阵维数、行数、列数、元素个数
- # 矩阵维数,1代表一维数组,2代表二维数组
- mwSize dims = surface_data(1)(1).NumberOfDimensions();
各维的具体大小:
mwArray ::GetDimensions()返回一个数组,表示数组各维数的大小,对于向量或二维数组,返回值都是两个元素,第1个元素表示行数,第2个元素表示列数。
mwArray arrayDim = surface_data(1)(1).GetDimensions();
行数及列数:
- //行数
- int rowCnt = arrayDim.Get(dims, 1);
-
- //列数
- int colCnt = arrayDim.Get(dims, 2);
元素个数:
mwArray::NumberOfElements() 返回数组的元素个数,等于行数乘以列数。
5、mwArray数组赋值
mwArray:: SetData(mxUint64* buffer, mwSizelen) 用于给数组赋值
其中,buffer必须是一维数组,即便mwArray变量是一个二维数组,len是一维数组的元素个数,等于行数乘以列数。
- int a[9] = { 1,2,3,4,5,6,7,8,9 };
- mwArray A(3, 3, mxINT32_CLASS);
- A.SetData(a, 9); //第二个参数为要设置的数的个数,大小可设为rows*cols
- mwString c = A.ToString();
- qDebug() << c;
打印结果为:
6、mwArray类型判断
- mwArray A(4, 4, mxINT32_CLASS);
- mxClassID cid= A.ClassID();
- qDebug() << cid;
7、mwArray数组元素读取
可以使用mwArray::Get()函数读取数组的元素。
- # 数据A为:
- 1 5 9 13
- 2 6 10 14
- 3 7 11 15
- 4 8 12 16
- int dim=2; // 二维数组
- # double value=matrixA.Get(dim,j,i); //按照dim维数数组读出,第j行, 第i列
- double value=matrixA.Get(2,3,4); //结果:15
8、 含字段名mwArray结构体定义
- const char* fields[] = { "x","y","z" };
- mwArray B(1, 1, sizeof(fields) / sizeof(fields[0]), fields);
- # 1,1代表行数、列数;3代表字段个数;fields代表字段名
- # mwArray B(1, 1, 3, fields);
示例:
- //给mwArray A赋值
- double a[9] = { 1,4,7,2,5,8,3,6,9};
- mwArray A(3, 3, mxDOUBLE_CLASS);
- A.SetData(a, 9); //第二个参数为要设置的数的个数,大小可设为rows*cols
-
- //构造含字段名的结构体cloud
- const char* fields_cloud[] = { "ptx","pty","ptz" };
- mwArray cloud(1, 1, 3, fields_cloud);
- //依次给各个字段名赋值
- cloud(1) = A;
- cloud(2) = A;
- cloud(3) = A;
- mwString scloud = cloud.ToString();
- qDebug() << scloud;
-
- //构造含字段名的结构体material
- const char* fields_material[] = { "peak","bottom"};
- mwArray material(1, 1, 2, fields_material);
-
- //依次给各字段名赋值,mwArray为数组类型,即使传入一个值,也需整合成一行一列的数组
- mwArray peak_data(1, 1, mxDOUBLE_CLASS, mxREAL);
- double peak[1] = {23.9};
- peak_data.SetData(peak, 1);
- material(1) = peak_data;
- mwArray bottom_data(1, 1, mxDOUBLE_CLASS, mxREAL);
- double bottom[1] = { 13.5 };
- bottom_data.SetData(bottom, 1);
- material(2) = bottom_data;
-
- mwString smaterial = material.ToString();
- qDebug() << smaterial;
-
- //构建含字段名结构体fields_result
- const char* fields_result[] = { "cloud","material" };
-
- mwArray result(1, 1, 2, fields_result);
- result(1) = cloud;
- result(2) = material;
-
- mwString result_data = result.ToString();
- qDebug() << result_data;
运行结果:
- ptx: [3x3 double]
- pty: [3x3 double]
- ptz: [3x3 double]
-
- peak: 23.9000
- bottom: 13.5000
-
- cloud: [1x1 struct]
- material: [1x1 struct]