mxArray
You can call your own C or C++ programs from the MATLAB command line as if they were built-in functions. These programs are called MEX functions and the function name is the MEX file name. MEX functions are not appropriate for all applications. MATLAB is a high-productivity environment whose specialty is eliminating time-consuming, low-level programming in compiled languages. In general, do your programming in MATLAB. Do not use MEX functions unless your application requires it.
To create a MEX function, write your programs using MATLAB APIs. The functions in these libraries facilitate the transfer of data between MEX functions and the workspace. To choose a MATLAB API, consider the following.
MathWorks recommends that you create MEX functions using modern C++ features, as defined in the MATLAB Data API. For more information, see C++ MEX Applications.
If your MEX functions must run in MATLAB R2017b or earlier, or if you prefer to work in the C
language, then use functions in the C Matrix API and the C MEX API.
These APIs use the MATLAB
mxArray
data
structure. The functions and topics on this page are based on
mxArray
.
Note
Choose functions from either the C Matrix API or the MATLAB Data API; you cannot mix functions from these APIs.
Build your source file into an executable program using the mex
function. You can also share
the MEX file with other MATLAB users.
For information about writing S-functions, see your Simulink® documentation.
To call a MEX function that someone else created, see MEX File Functions.
If you have a C/C++ program and want to call MATLAB functions from the program, then use one of the engine APIs.
If you want to read and write MATLAB data from C/C++ programs, then use the MATLAB C API to Read MAT-File Data.
mexFunction | Entry point to C/C++ MEX function built with C Matrix API |
mexFunctionName | Name of current MEX function |
mexAtExit | Register function to call when MEX function clears or MATLAB terminates |
mexCallMATLAB | Call MATLAB function, user-defined function, or MEX function |
mexCallMATLABWithTrap | Call MATLAB function, user-defined function, or MEX file and capture error information |
mexEvalString | Execute MATLAB command in caller workspace |
mexEvalStringWithTrap | Execute MATLAB command in caller workspace and capture error information |
mexGetVariable | Copy of variable from specified workspace |
mexGetVariablePtr | Read-only pointer to variable from another workspace |
mexPutVariable | Array from MEX function into specified workspace |
mexGet | Value of specified graphics property |
mexSet | Set value of specified graphics property |
mexPrintf | ANSI C PRINTF-style output routine |
mexErrMsgIdAndTxt | Display error message with identifier and return to MATLAB prompt |
mexWarnMsgIdAndTxt | Warning message with identifier |
mexIsLocked | Determine if MEX file is locked |
mexLock | Prevent clearing MEX file from memory |
mexUnlock | Allow clearing MEX file from memory |
mexMakeArrayPersistent | Make array persist after MEX file completes |
mexMakeMemoryPersistent | Make memory allocated by MATLAB persist after MEX function completes |
This example shows how to create the arrayProduct
C MEX
function built with the C Matrix API.
Tables of MEX Function Source Code Examples
Links to source code for MEX function examples.
Using mxArray
in MEX files.
Rules for managing mxArray
memory.
Create C++ MEX Functions with C Matrix API
C++ language issues to consider when creating MEX functions built with the C Matrix API.
Print error information using the mexErrMsgIdAndTxt
function.
Handling Large File I/O in MEX Files
How to use 64-bit file I/O in your MEX file.
Testing for Most-Derived Class
How to exclude subclasses of built-in types from MEX file input arguments.
This example shows how to build the example C MEX function arrayProduct
.
Upgrade MEX Files to Use Interleaved Complex API
MATLAB Version 9.4 (R2018a) supports an interleaved representation of complex numbers.
Upgrade MEX Files to Use 64-Bit API
MATLAB Version 9.2 (R2017a) builds MEX files with the 64-bit API by default.
Upgrade MEX Files to Use Graphics Objects
MATLAB Version 8.4 (R2014b) changes the data type of handles to graphics objects
from double
to object.
Document Build Information in the MEX File
This example shows how to document the xtimesy
MEX file built on a Windows® platform using a Microsoft®
Visual C++® compiler.
To help diagnose compiler set up and build errors, call the
mex
function with verbose option -v.
What to do when compiling a MEX file fails.
Troubleshooting MEX API Incompatibilities
More information for warnings and error messages.
Troubleshooting and Limitations Compiling C/C++ MEX Files with MinGW-w64
Troubleshooting MEX files built with the MinGW-w64 compiler.
Symbol mexFunction Unresolved or Not Defined
Every MEX file needs a mexFunction
.
What to do when you get an invalid MEX file error.
For best results, run MEX files built with your MATLAB version.
If you get a binary MEX file from another source, be sure that the file was compiled for the same platform on which you want to run it.
Do not call a single session of MATLAB on separate threads from a MEX file.
What to do when a MEX file causes a segmentation violation or assertion.
MEX File Generates Incorrect Results
What to do when your MEX generates wrong answers.
Debug on Microsoft Windows Platforms
Suggestions for debugging with Microsoft Visual Studio®.
This example shows how to debug a MEX file on Mac Platforms.
This example shows how to debug a MEX file on Linux® Platforms.