MATLAB Compiler SDK 中 mwArray 核心用法与最佳实践
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 写法(推荐,简洁像 MATLAB):
mwArray a(1.0), b(2.0), c;
c = a + b; // 直接运算符重载
// 离开作用域自动析构,无需手动 destroy
mwArray 的优势:
- 自动内存管理(引用计数 + copy-on-write)
- 支持运算符重载(+、-、*、/、() 索引等)
- 更安全的 RAII 风格
2. 常用构造函数
掌握几种最常用的构造方式至关重要:
// 空数组 / 指定尺寸 + 类型
mwArray a;
;
;
;
;
;
vals[] = {, , , , , };
;
g.(vals, );
* fields[] = {, , };
;
mwArray t = g;

