zoukankan      html  css  js  c++  java
  • 关于mwArray 的一些资料(一)

    mxArray 和 mwArray 的区别

    转之于 http://blog.csdn.net/crystal_avast/article/details/7064796

    首先,mxArray是Matlab C 函数库的结构体,而mwArray是Matlab C++ 函数库中对mxArray的包装类。

    其次,二者的内存管理方式不同。mxArray的内存管理方式比较松散,由于是C函数库,没有数据封装,必须对临时阵列和约束阵列的概念极为明确,并且须 小心地防止内存泄漏(要多写好多代码)。尽管有自动内存管理机制(mlfEnterNewContext,mlfReleasePreviousContext),仍然要处处调用mlfAssign,麻烦得很。然而mwArray就好的多,一切交给 C++对象去搞定,你只要放心地用就可以了。不过Matlab C++函数库为了防止频繁内存分配和释放重写了内存分配和释放等函数。你会发现对于mwArray a,b; a=b;实际上并没有生成两个相同数据块,只是指针,只有发成数据改

    变时才copy完整数据。

        再次,这两个东西各自有一套与之相对应的函数。函数的返回值类型不同,需要多加注意。

             最后,用的时候mxArray要使用指针,而mwArray直接当类对象使。如果你不是Hardcore级的牛人或具有Hardcore倾向的潜牛人,强烈建议使用后者!可以把mwArray看成类似于程序语言中int, float等基本类型,在具体用 的过程中转换成你想要的类型。如果从面向对象编程的角度来看,mwArray其实就是所有数据类型的基类,类似于MFC中的Object对象。在 Matlab的开发中,所有的数据对象都先当成mwArray来看待,函数返回值也是以mwArray类型或mwArray数组返回,在二次开发中,根据 需要转换成需要的数据类型就可以了,我一般做是将mwArray先转成string,然后再将string解析成数值!mwArray感觉如同面向对象语言中的object类,正因为如此matlab的 变量和一般的编程语言不同,它不区分int,float等等。如果熟悉C#的话,对这个估计可以理解的更深。用matlab做法,mwarray是它的基 本数据类型,单个变量和数组均适用,具体需要的时候可以转换成相应的数据类型。详细的可以查查matlab的帮助文件,有比较详细的说明。

    声明

    mxArray:

    mxArray *a;

    mwArray:

    mwArray a;

    销毁

    mxArray

    mxDestroyArray a;

    mwArray

    mwArray类的析构函数自动销毁对象

    变量赋值

    mxArray

    memcpy(dest_ptr,source_ptr,MAX_SIZE);

    mwArray

    mwArray in1(3, 3, mxDOUBLE_CLASS, mxREAL);
    mwArray in2(3, 3, mxDOUBLE_CLASS, mxREAL);
    in1.SetData(data, 9);
    in2.SetData(data, 9);

     

  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/kmliang/p/2662943.html
Copyright © 2011-2022 走看看