• mwArray笔记


    1、mwArray转换成mwString

    1. mwArray result;
    2. mwString ss = result.ToString();

    2、mwString转换成string

    1. mwString ss;
    2. const char* ass = ss.operator const char* ();
    3. qDebug() << ass;

    3、mwArray结构体数据读取

    1. 示例一:
    2. mwArray surface_data;
    3. mwString peak = surface_data(2).ToString();
    4. 示例二:
    5. mwArray surface_data;
    6. mwString peak = surface_data(2)(1).ToString();

    4、矩阵维数、行数、列数、元素个数

    1. # 矩阵维数,1代表一维数组,2代表二维数组
    2. mwSize dims = surface_data(1)(1).NumberOfDimensions();

    各维的具体大小:

    mwArray ::GetDimensions()返回一个数组,表示数组各维数的大小,对于向量或二维数组,返回值都是两个元素,第1个元素表示行数,第2个元素表示列数。

    mwArray arrayDim = surface_data(1)(1).GetDimensions();

    行数及列数:

    1. //行数
    2. int rowCnt = arrayDim.Get(dims, 1);
    3. //列数
    4. int colCnt = arrayDim.Get(dims, 2);

    元素个数:

    mwArray::NumberOfElements() 返回数组的元素个数,等于行数乘以列数。

    5、mwArray数组赋值

    mwArray:: SetData(mxUint64* buffer, mwSizelen) 用于给数组赋值

    其中,buffer必须是一维数组,即便mwArray变量是一个二维数组,len是一维数组的元素个数,等于行数乘以列数。

    1. int a[9] = { 1,2,3,4,5,6,7,8,9 };
    2. mwArray A(3, 3, mxINT32_CLASS);
    3. A.SetData(a, 9); //第二个参数为要设置的数的个数,大小可设为rows*cols
    4. mwString c = A.ToString();
    5. qDebug() << c;

     打印结果为:

    6、mwArray类型判断

    1. mwArray A(4, 4, mxINT32_CLASS);
    2. mxClassID cid= A.ClassID();
    3. qDebug() << cid;

    7、mwArray数组元素读取

     可以使用mwArray::Get()函数读取数组的元素。

    1. # 数据A为:
    2. 1 5 9 13
    3. 2 6 10 14
    4. 3 7 11 15
    5. 4 8 12 16
    1. int dim=2; // 二维数组
    2. # double value=matrixA.Get(dim,j,i); //按照dim维数数组读出,第j行, 第i列
    3. double value=matrixA.Get(2,3,4); //结果:15

    8、 含字段名mwArray结构体定义

    1. const char* fields[] = { "x","y","z" };
    2. mwArray B(1, 1, sizeof(fields) / sizeof(fields[0]), fields);
    3. # 11代表行数、列数;3代表字段个数;fields代表字段名
    4. # mwArray B(1, 1, 3, fields);

    示例:

    1. //给mwArray A赋值
    2. double a[9] = { 1,4,7,2,5,8,3,6,9};
    3. mwArray A(3, 3, mxDOUBLE_CLASS);
    4. A.SetData(a, 9); //第二个参数为要设置的数的个数,大小可设为rows*cols
    5. //构造含字段名的结构体cloud
    6. const char* fields_cloud[] = { "ptx","pty","ptz" };
    7. mwArray cloud(1, 1, 3, fields_cloud);
    8. //依次给各个字段名赋值
    9. cloud(1) = A;
    10. cloud(2) = A;
    11. cloud(3) = A;
    12. mwString scloud = cloud.ToString();
    13. qDebug() << scloud;
    14. //构造含字段名的结构体material
    15. const char* fields_material[] = { "peak","bottom"};
    16. mwArray material(1, 1, 2, fields_material);
    17. //依次给各字段名赋值,mwArray为数组类型,即使传入一个值,也需整合成一行一列的数组
    18. mwArray peak_data(1, 1, mxDOUBLE_CLASS, mxREAL);
    19. double peak[1] = {23.9};
    20. peak_data.SetData(peak, 1);
    21. material(1) = peak_data;
    22. mwArray bottom_data(1, 1, mxDOUBLE_CLASS, mxREAL);
    23. double bottom[1] = { 13.5 };
    24. bottom_data.SetData(bottom, 1);
    25. material(2) = bottom_data;
    26. mwString smaterial = material.ToString();
    27. qDebug() << smaterial;
    28. //构建含字段名结构体fields_result
    29. const char* fields_result[] = { "cloud","material" };
    30. mwArray result(1, 1, 2, fields_result);
    31. result(1) = cloud;
    32. result(2) = material;
    33. mwString result_data = result.ToString();
    34. qDebug() << result_data;

    运行结果:

    1. ptx: [3x3 double]
    2. pty: [3x3 double]
    3. ptz: [3x3 double]
    4. peak: 23.9000
    5. bottom: 13.5000
    6. cloud: [1x1 struct]
    7. material: [1x1 struct]
  • 相关阅读:
    linux常用命令-文件增删查改
    自定义表单、自定义流程、自定义页面、自定义报表应用开发平台
    csmall-passport(Day15)
    mysql全量备份和增量备份脚本
    mysql(七)------数据库的索引
    说明书SMW200A信号发生器
    [环境配置][原创]matconv在windows上GPU编译成功的环境
    VoLTE端到端业务详解 | VoLTE用户呼叫流程
    java--强制类型转换
    算法----好数对的数目(Kotlin)
  • 原文地址:https://blog.csdn.net/WXG1011/article/details/133747291