Main Content

MEX 函数源代码示例表

下列各表包含用于创建示例 MEX 函数的源代码文件的列表。您可将这些示例作为起点来创建您自己的 MEX 函数。这些表包含以下信息。

  • 示例名称 - 一个链接,您可以通过该链接直接在 MATLAB® 编辑器中打开示例源文件。您可以使用任何代码开发编辑器来创建源 MEX 文件。

  • 示例子文件夹 - matlabroot/extern/examples 中包含示例的子文件夹。将文件复制到可写文件夹时使用此子文件夹名称。

  • 描述 - 描述该示例。

  • 详细信息 - 指向有关描述或使用该示例的主题的链接,或指向示例中使用的 API 函数的链接。

快速入门

使用 mex 命令编译示例。请确保您安装了 MATLAB 支持的编译器。要验证为源代码语言 lang 选择的编译器,请键入:

mex -setup lang

使用以下命令语法将文件复制到路径上的一个可写文件夹中。filename 是示例的名称,foldername 是子文件夹名称。

copyfile(fullfile(matlabroot,'extern','examples','foldername','filename'),'.','f')

例如,要复制 arrayProduct.c,请键入:

copyfile(fullfile(matlabroot,'extern','examples','mex','arrayProduct.c'),'.','f')

C、C++ 和 Fortran MEX 函数

要在 MATLAB 中或在您的操作系统提示符下编译示例 MEX 函数,请使用以下命令语法。filename 是示例名称,release-option 指定示例使用的 API。有关 MATLAB API 的信息,请参阅 选择 MEX 应用程序

mex -v -release-option filename
示例名称示例子文件夹描述更多信息
arrayFillGetPr.c refbook

使用 mxGetDoubles 填充 mxArray

Fill mxArray in C MEX File
arrayFillSetData.c refbook

使用非双精度值填充 mxArray

Fill mxArray in C MEX File
arrayFillSetPr.c refbook

使用 mxSetDoubles 填充 mxArray 以动态分配内存。

Fill mxArray in C MEX File
arrayFillSetComplexPr.crefbook

使用 mxSetComplexDoubles 填充 mxArray 以动态分配内存。

Fill mxArray in C MEX File
arrayProduct.cmex

将标量乘以 1xN 矩阵。

创建 C 源 MEX 文件 arrayProduct.c
arrayProduct.cppcpp_mex

arrayProduct.c 相同,使用 MATLAB Data API for C++

C++ MEX 函数
arraySize.c mex

说明大型 mxArray 的内存要求。

Handling Large mxArrays in C MEX Files
complexAdd.Frefbook

添加两个复数双精度数组。

 
convec.c
convec.F
refbook

传递复数数据。

Handle Complex Data in C MEX File
dblmat.F
compute.F
refbook使用 Fortran %VAL 
doubleelement.crefbook使用无符号 16 位整数。Handle 8-, 16-, 32-, and 64-Bit Data in C MEX File
explore.cmex识别输入变量的数据类型。Work with mxArrays
findnz.c refbook使用 N 维数组。Manipulate Multidimensional Numerical Arrays in C MEX Files
fulltosparseIC.c
fulltosparse.c
fulltosparse.F, loadsparse.F
refbook填充稀疏矩阵。Handle Sparse Arrays in C MEX File
matsq.Frefbook在 Fortran 中传递矩阵。 
matsqint8.Frefbook在 Fortran 中传递非双精度矩阵。 
mexatexit.c
mexatexit.cpp
mex注册 exit 函数以关闭数据文件。C++ 文件处理示例
mexcallmatlab.cmex

调用内置的 MATLAB disp 函数。

 
mexcallmatlabwithtrap.c mex如何捕获错误信息。 
mexcpp.cppmex在使用 C 矩阵 API 编译的 MEX 文件中演示一些 C++ 语言功能。C++ 类示例
mexevalstring.c mex使用 mexEvalString 分配 MATLAB 中的变量。mexEvalString
mexfunction.cmex如何使用 mexFunctionmexFunction
mxgetproperty.cmex使用 mxGetPropertymxSetProperty 来更改图形对象的 Color 属性。mxGetPropertymxSetProperty
mexgetarray.cmex使用 mexGetVariablemexPutVariable 来跟踪 MEX 文件和 MATLAB 全局工作区中的计数器。mexGetVariablemexPutVariable
mexgetarray.cpp mexgetarray.c 相同,使用 MATLAB Data API for C++ 中的 getVariablesetVariableSet and Get MATLAB Variables from MEX
mexlock.c
mexlockf.F
mex如何锁定和解锁 MEX 文件。mexLock
mxcalcsinglesubscript.cmx演示 MATLAB 从 1 开始的矩阵索引与从 0 开始的 C 索引之间的对比。mxCalcSingleSubscript
mxcreatecellmatrix.c
mxcreatecellmatrixf.F
mx创建二维元胞数组。Create 2-D Cell Array in C MEX File
mxcreatecharmatrixfromstr.cmx创建二维字符数组。mxCreateCharMatrixFromStrings
mxcreatestructarray.cmx基于 C 结构体创建 MATLAB 结构体。mxCreateStructArray
mxcreateuninitnumericmatrix.cmx

创建未初始化的 mxArray,用本地数据进行填充,然后返回。

mxCreateUninitNumericMatrix
mxgeteps.c
mxgetepsf.F
mx

读取 MATLAB eps 值。

mxGetEps
mxgetinf.cmx

读取 inf 值。

mxGetInf
mxgetnzmax.c mx显示稀疏矩阵中的非零元素数量以及它能存储的最大非零元素数量。mxGetNzmax
mxisclass.cmx检查数组是否为指定类的成员。mxIsClass
mxisfinite.cmx检查 NaN 和无限值。mxIsFinite
mxislogical.cmx

检查工作区变量是逻辑值还是全局变量。

mxIsLogical
mxisscalar.cmx检查输入变量是否为标量。mxIsScalar
mxmalloc.cmx

分配内存,以将 MATLAB char 数组复制到 C 样式的字符串。

mxMalloc
mxsetdimensions.c
mxsetdimensionsf.F
mx重构数组。mxSetDimensions
mxsetnzmax.cmx为稀疏矩阵重新分配内存并重置 prpiirnzmax 的值。mxSetNzmax
passstr.F refbook将 C 字符矩阵从 Fortran 传递到 MATLAB。 
phonebook.crefbook操作结构体和元胞数组。Pass Structures and Cell Arrays in C MEX File
phonebook.cppcpp_mexphonebook.c 相同,使用 MATLAB Data API for C++C++ MEX 函数
revord.c
revord.F
refbook

将 MATLAB char 数组复制为 C 样式的字符串,或进行反向操作。

Pass Strings in C MEX File
sincall.c
sincall.F, fill.F
refbook

创建 mxArray 并将其传递给 MATLAB sinplot 函数。

 
timestwo.c
timestwo.F
refbook演示 MEX 文件的常见工作流。Pass Scalar Values in C MEX File
xtimesy.c
xtimesy.F
refbook传递多个参数。
yprime.c
yprimef.F, yprimefg.F
mex求解简单的三体轨道问题。 
yprime.cppcpp_mexyprime.c 相同,使用 MATLAB Data API for C++C++ MEX 函数

MEX 函数调用 Fortran 子例程

此中的示例从 MEX 函数调用 LAPACK 或 BLAS 函数。这些示例链接到 Fortran 库 mwlapackmwblas 或者同时链接到这两个库。要编译 MEX 函数,请按照详细信息列中列出的主题中的说明进行操作。

示例名称 示例子文件夹 描述 更多信息
dotProductComplexIC.c
dotProductComplexIC.F
dotProductComplex.c
refbook为通过 C 或 Fortran MEX 文件调用的函数处理 Fortran 复数返回类型。
dotProductComplexIC.cdotProductComplexIC.F 使用交错式复矩阵 API。dotProductComplex.c 使用分离式复矩阵 API。
Handle Fortran Complex Return Type — dotProductComplex
matrixDivide.crefbook调用 LAPACK 函数。保留修改后的输入值
matrixDivideComplex.crefbook使用复数调用 LAPACK 函数。Pass Complex Variables — matrixDivideComplex
matrixMultiply.crefbook调用 BLAS 函数。将参量从 C/C++ 程序传递给 Fortran 函数
utdu_slv.crefbook将 LAPACK 用于对称不定因式分解。Symmetric Indefinite Factorization Using LAPACK — utdu_slv

另请参阅

相关主题