选择 MEX 应用程序
R2026b您可以通过 MATLAB® 命令行调用您自己的 C、C++ 或 Fortran 程序(就当它们是内置函数一样)。这些程序称为 MEX 函数。MEX 函数并不适用于所有的应用程序。MATLAB 是一种高生产率环境,尤其适用于消除像 C 或 C++ 等编译语言中需要花费大量时间的低级编程。一般情况下,请在 MATLAB 中进行编程。
注意
要使用 MATLAB R2023a 或更高版本直接调用 C/C++ 库中的函数,请参阅 clibPublishInterfaceWorkflow。
要创建 MEX 函数,请使用 MATLAB API 编写您的程序,然后使用 mex 命令编译它。这些 API 提供以下功能:
从 MEX 函数中调用 MATLAB 函数。
无缝集成到 MATLAB 中,从 MATLAB 获取输入并向其返回结果。
支持 MATLAB 数据类型。
MEX 术语
MEX 表示 MATLAB 可执行文件,它具有不同含义,如下表所示。
| MEX 术语 | 定义 |
|---|---|
| MEX 文件 | C、C++ 或 Fortran 源代码文件。 |
| MEX 函数 | 在 MATLAB 环境中执行的动态链接子例程。 |
| MEX API | C MEX API 和 Fortran MEX API 中的函数,用于在 MATLAB 环境中执行运算。 |
mex 编译脚本 | 基于源文件创建二进制文件的 MATLAB 函数。 |
C++ MEX 函数
使用 MATLAB Data API for C++ 和 C++ MEX API 编写 C++ MEX 函数,它们支持 C++11 编程功能。这些 API 基于 matlab::data::Array 类,提供更好的类型安全性、数组边界检查并支持现代 C++ 构造以简化编码。这些 API:
通过支持共享数据和原位优化来提高性能。
支持原生 C++ 类型,使创建 MATLAB 数据数组更加容易。用于从 C++ 调用 MATLAB 的 feval 函数支持基本 C++ 类型和自然参量列表,而 C 函数
mexCallMATLAB需要创建一个输入数组,其中每个输入都必须为mxArray。通过支持迭代器和智能指针(而不是原始指针上的指针算术)来提高稳健性。这可以消除对数据指针的直接访问,降低内存损坏的可能性。
支持行优先和列优先数据,使适配 C/C++ 行优先数据更加容易。
有关详细信息,请参阅编写可从 MATLAB(MEX 文件)调用的 C++ 函数。
MATLAB R2017b 及更早版本的 C/C++ MEX 函数
如果您的 MEX 函数必须在 MATLAB R2017b 或更早版本中运行,或如果您更喜欢使用 C 语言,请使用这些库中基于 mxArray 数据结构体的函数编写源文件。有关详细信息,请参阅编写可从 MATLAB(MEX 文件)调用的 C 函数。
关于 编写可从 MATLAB(MEX 文件)调用的 C 函数的 C MEX API
小心
不要将 C Matrix API 中的函数与 MATLAB Data API 中的函数混合使用。
Fortran MEX 函数
要编写 Fortran MEX 函数,请使用基于 mxArray 数据结构体的 Fortran MEX API 和 Fortran Matrix API。
有关详细信息,请参阅编写可从 MATLAB(MEX 文件)调用的 Fortran 函数。
另请参阅
clibPublishInterfaceWorkflow | matlab::data::Array | mxArray | mex