首先,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倾向的潜牛人,我强烈建议你使用后者!
举一个简单的例子:如果你需要计算c=a+b那么两者的区别是这样的:
mxArray:
void fun(){
……
double d_a=1,d_b=2;
mxArray *a,*b,*c;
mlfEnterNewContext(0,0);
mlfAssign(&a,mlfScalar(d_a));
mlfAssign(&b,mlfScalar(d_b));
mlfAssign(&c,mlfPlus(a,b));
……
mlfReleasePreviousContext(0,0);
mxDestroyArray(a);
mxDestroyArray(b);
mxDestroyArray(c);
}
mwArray:
void fun(){
……
mwArray a,b,c;
a=1;
b=2;
c=a+b;
……
}
mwArray和mxArray有什么区别?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
matlabR2008a函数编译成dll供vc6.0调用的方法
vopit
2019-02-23 00:27:23
想要毫无PS痕迹,你得用它
wwtwwttc
2019-02-23 14:05:24
盯完红点,为何白墙也能显影?
wwtwwttc
2019-02-23 14:05:22
C# 日期格式化 年月日 星期 时间
星星鑫鑫
2019-02-23 13:19:08
关于const A* f(const A* pSrc,A* const pDst,int v=2,...) const throw();
nickybeidi
2019-02-23 00:34:31
C语言 各个类型占用的大小
gzjyjs
2019-02-23 00:33:19
C语言 求两个数的最大公约数
gzjyjs
2019-02-23 00:33:18
C语言 输入一个小数,输出它的立方。输出保留小数点后的2位数字
gzjyjs
2019-02-23 00:33:17
C语言打印 hello world
gzjyjs
2019-02-23 00:33:17
理解 Thread.Sleep 函数 ,Sleep(0) 释放当前线程所剩余的时间片,让线程马上回到就绪队列而非等待队列
騎個龍凍牆
2019-02-23 00:00:18
C、C++、C#、Java、php、python语言的内在特性及区别
客棧小二哥
2019-02-22 23:51:44