mwArray 是 MATLAB Compiler SDK(以前叫 MATLAB Compiler)生成的 C++ shared library(或 standalone application)中,用来在 C++ 和 MATLAB 之间传递输入/输出参数的核心类。它本质上是 mxArray 的 C++ 封装(wrapper),让 C++ 程序员可以用更自然的面向对象方式操作 MATLAB 矩阵/数组,而不用手动管理 mxArray 指针和 mxDestroyArray 等繁琐的 C 风格内存操作。
1. 为什么用 mwArray 而不是 mxArray?
对比两种写法:
mxArray 写法(C 风格):
mxArray *a = NULL, *b = NULL, *c = NULL;
mlfEnterNewContext(0, 0);
mlfAssign(&a, mlfScalar(1.0));
mlfAssign(&b, mlfScalar(2.0));
mlfAssign(&c, mlfPlus(a, b));
// 调用生成的 mlfXXX 函数
mlfReleasePreviousContext(0, 0);
mxDestroyArray(a);
mxDestroyArray(b);
mxDestroyArray(c);
mwArray 写法(推荐):
mwArray a(1.0), b(2.0), c;
c = a + b; // 直接运算符重载
// 离开作用域自动析构,无需手动 destroy
mwArray 的优势:
- 自动内存管理(引用计数 + copy-on-write)
- 支持运算符重载(+、-、*、/、() 索引等)
- 更安全的 RAII 风格
2. 常用构造函数
// 空数组 / 指定尺寸 + 类型
mwArray a; // empty
mwArray b(, , mxDOUBLE_CLASS);
;
;
;
;
vals[] = {, , , , , };
;
g.(vals, );
* fields[] = {, , };
;
mwArray t = g;

