Escribir funciones de C que se pueden llamar desde MATLAB (archivos MEX)
mxArray
para acceder a variables de MATLAB y crear arreglos para devolver a MATLABPuede llamar a sus propios programas de C mediante la línea de comandos de MATLAB como si fueran funciones integradas. Estos programas se conocen como funciones MEX y el nombre de la función es el nombre del archivo MEX. Las funciones MEX no son apropiadas para todas las aplicaciones. MATLAB es un entorno de alta productividad que se especializa en eliminar programación de bajo nivel que requiere mucho tiempo en lenguajes compilados. En general, haga la programación en MATLAB. No utilice funciones MEX a menos que su aplicación lo requiera.
Para crear una función MEX, escriba sus programas usando las API de MATLAB. Las funciones de estas bibliotecas facilitan la transferencia de datos entre las funciones MEX y el área de trabajo. Al elegir una API de MATLAB, tenga en cuenta lo siguiente:
Cree funciones MEX con funcionalidades de C++ moderno, como se define en API de datos de MATLAB para C++. Para obtener más información, consulte Escribir funciones de C++ que se pueden llamar desde MATLAB (archivos MEX).
Si sus funciones MEX deben ejecutarse en la versión R2017b de MATLAB o en anteriores o si prefiere trabajar en el lenguaje C, utilice funciones en API para manipular matrices en C y la API de C MEX. Estas API utilizan la estructura
mxArray
de MATLAB. Las funciones y los temas de esta páginas están basados enmxArray
.
Nota
Seleccione las funciones de la API para manipular matrices en C o la API de datos de MATLAB, no puede mezclar funciones de estas API.
Cree el archivo fuente en un programa ejecutable mediante el uso de la función mex
. También puede compartir el archivo MEX con otros usuarios de MATLAB.
Para obtener información acerca de cómo escribir funciones S, consulte la documentación de Simulink®.
Para llamar una función MEX que alguien creó, consulte Llamar a funciones MEX.
Si tiene un programa de C/C++ y desea llamar a funciones de MATLAB desde el programa, entonces utilice una de las API del motor. Para obtener más información, consulte:
Si desea leer y escribir datos de MATLAB desde programas de C, consulte Escribir programas de C para leer datos de archivos MAT.
Funciones
API de C MEX
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 |
Temas
Escribir funciones de C MEX
- 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.
Compruebe su entorno de trabajo
- Crear funciones C MEX
Este ejemplo muestra cómo crear la función de C MEX
arrayProduct
de ejemplo.
Versiones de la API para manipular matrices en 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.
Compartir archivos 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.
Solución de problemas
Errores de compilación
- 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
.
Errores de tiempo de ejecución
- Invalid MEX File Errors
What to do when you get an invalid MEX file error. - Compatibilidad entre versiones de archivos MEX
Para obtener los mejores resultados, ejecute los archivos MEX creados con su versión de MATLAB. - 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.
Depuración
- 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.