Scrittura di funzioni C richiamabili da MATLAB (MEX Files)
mxArray
per accedere alle variabili di MATLAB e creare array da restituire a MATLABÈ possibile chiamare i propri programmi C dalla riga di comando di MATLAB come se fossero delle funzioni incorporate. Questi programmi sono chiamati funzioni MEX e il nome della funzione è il nome del file MEX. Le funzioni MEX non sono adatte a tutte le applicazioni. MATLAB è un ambiente ad alta produttività la cui specialità è eliminare la programmazione di basso livello nei linguaggi compilati, che richiede molto tempo. In generale, eseguire la programmazione in MATLAB. Non utilizzare le funzioni MEX a meno che l'applicazione non lo richieda.
Per creare una funzione MEX, scrivere i programmi utilizzando le API di MATLAB. Le funzioni di queste librerie facilitano il trasferimento dei dati tra le funzioni MEX e il workspace. Per scegliere un’API di MATLAB, si consideri quanto segue:
Creare funzioni MEX utilizzando le moderne feature di C++, come definito nel API dei dati di MATLAB per C++. Per maggiori informazioni, vedere Scrittura di funzioni C++ chiamabili da MATLAB (file MEX).
Se le funzioni MEX devono essere eseguite in MATLAB R2017b, o release precedenti, oppure se si preferisce lavorare in linguaggio C, utilizzare le funzioni in API Matrix C e l’API MEX C. Queste API utilizzano la struttura dei dati di MATLAB
mxArray
. Le funzioni e gli argomenti di questa pagina sono basati sumxArray
.
Nota
Scegliere le funzioni dell'API Matrix C o dell'API di dati di MATLAB; non è possibile mescolare le funzioni di queste API.
Costruire il file sorgente in un programma eseguibile utilizzando la funzione mex
. È inoltre possibile condividere il file MEX con altri utenti di MATLAB.
Per informazioni sulla scrittura di funzioni S, vedere la documentazione di Simulink®.
Per chiamare una funzione MEX creata da altre persone, vedere Chiamata delle funzioni MEX.
Se si dispone di un programma C/C++ e si desidera chiamare le funzioni di MATLAB dal programma, si può utilizzare una delle API di engine. Per maggiori informazioni, vedere:
Se si desidera leggere e scrivere dati di MATLAB da programmi C, vedere Scrittura di programmi C per la lettura di dati di file MAT.
Funzioni
API MEX C
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 |
Argomenti
Scrittura di funzioni MEX C
- Create C Source MEX File arrayProduct.c
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.
- MATLAB Data
Using
mxArray
in MEX files. - Memory Management Issues
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. - Error Handling in C MEX Files
Print error information using themexErrMsgIdAndTxt
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.
Test dell'ambiente di costruzione
- Build C MEX Function
This example shows how to build the example C MEX function
arrayProduct
.
Versioni di API Matrix C
- 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 fromdouble
to object.
Condivisione di file MEX
- Document Build Information in the MEX File
This example shows how to document thextimesy
MEX file built on a Windows® platform using a Microsoft® Visual C++® compiler.
Risoluzione dei problemi
Errori di costruzione
- Getting Help When MEX Fails
To help diagnose compiler set up and build errors, call themex
function with verbose option -v. - Compiling MEX File Fails
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 amexFunction
.
Errori di runtime
- Invalid MEX File Errors
What to do when you get an invalid MEX file error. - MEX Version Compatibility
For best results, run MEX files built with your MATLAB version. - MEX Platform Compatibility
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. - MEX API Is Not Thread Safe
Do not call a single session of MATLAB on separate threads from a MEX file. - MEX File Segmentation Fault
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
- Debug on Microsoft Windows Platforms
Suggestions for debugging with Microsoft Visual Studio®. - Debug on macOS Platforms
This example shows how to debug a MEX file on Mac Platforms. - Debug on Linux Platforms
This example shows how to debug a MEX file on Linux® Platforms.