zoukankan      html  css  js  c++  java
  • mwArray与C++接口

    1.Matlab调用C++http://blog.csdn.net/zouxy09/article/details/20553007

    摘录下效果图:



    2.mwArray类操作http://blog.sina.com.cn/s/blog_9460ff790101fujz.html

    2.1. 复数数组的初始化(由C到matlab)

        double rdata[4] = {1.0, 2.0, 3.0, 4.0};

        double idata[4] = {10.0, 20.0, 30.0, 40.0};

        mwArray a(2, 2, mxDOUBLE_CLASS, mxCOMPLEX);

        a.Real().SetData(rdata, 4);

        a.Imag().SetData(idata, 4);


       对应从mwArray中获取元素

        a.Real().GetData(buffer,len);

        a.Imag().GetData(buffer,len);


    2.2. cell元组阵列的获取

        由于mwArray索引运算符()直接返回mwArray类型,因此可以直接声明通过索引获取元组内的矩阵值。

        eg: a={[1],[2],[1 2;3 4];[1 3;2 4],[1],[2]};

        mwArray b=a(2); //b=[1 3;2 4];

        mwArray c=a(5); //c=[1 2;3 4];

        PS:mwArray中数组为按列排,因此[1 3;2 4]的索引号为2


    2.3. mwArray成员函数使用

        int NumberOfDimensions        返回矩阵维数

        int NumberOfElements            返回矩阵元素个数

        mwArray GetDimensions         返回一维矩阵,表示矩阵各维大小

        bool IsComplex                        判断是否复数矩阵

        PS:使用GetData前可先使用NumberOfElements确定元素个数,避免越界


    2.4. 字符串转换为mwArray

        char str[]="inFile.mat";

        mwArray inFile(str);

        则inFile则可以直接作为函数的输入参数进行传递。


    更详细的说明见:http://blog.sina.com.cn/s/blog_b3facf740101e3c7.html

    intNumberOfFields() const 返回结构体域个数

    intElementSize() const 返回mwArray阵列元素大小

    intCompareTo(const mwArray& arr)const对比两个mwArray阵列

    boolIsSparse()const 判断是否Sparse阵列

    boolIsNumeric()const 判断是否是数值阵列

    boolIsEmpty()const 判断是否是空阵列

    boolIsComplex()const 判断是否复型阵列

    boolEquals(const mwArray& arr)const 判断两个阵列是否相同


    3.我使用的代码


    //输入,文件名,用于载入文件

    std::string SFilename;

    const mwArray Filename(SFilename.c_str());
    
    
    mwArray topic_numM(1,5,mxINT8_CLASS);
    double b[] = {5,4,3,6,8};
    topic_numM.SetData(b,5);

    //输出,用于获取数组

    int OutNorNum   =530;
    int OutabNorNum =33;
    mwArray Normal;
    mwArray x_Abnorm_index;
    
    函数....................................
    

    double* Ptrue  = new double[OutNorNum];
    int* Indexfalse= new int [OutabNorNum];
    double* Pfalse = new double[OutNorNum];

    Normal.GetData(Ptrue,OutNorNum);//此句 导致程序崩溃!越界
    x_Abnorm_index.GetData(Indexfalse,OutabNorNum);//此句 导致程序崩溃!超出下标

  • 相关阅读:
    fused multiply and add
    gcc优化选项解析
    gcc的搜索路径,头文件和库
    使用-Wl直接向ld传递参数
    ldd LD_TRACE_LOADED_OBJECTS
    linux下库的使用
    在RedHat 5下安装Oracle 10g详解(转)
    Centos下安装X Window+GNOME Desktop+FreeNX
    oracle exp direct 执行机制
    详解Oracle的unlimited tablespace系统权限
  • 原文地址:https://www.cnblogs.com/wishchin/p/9200251.html
Copyright © 2011-2022 走看看