이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
MATLAB에서 호출 가능한 C 함수 작성하기(MEX 파일)
mxArray
를 사용하여 MATLAB® R2017b 이전 버전에서 호출 가능한 C 함수를 작성하여 MATLAB 변수에 액세스하고 MATLAB에 반환되는 배열 생성직접 작성한 C 프로그램을 내장 함수인 것처럼 MATLAB 명령줄에서 호출할 수 있습니다. 이러한 프로그램을 MEX 함수라고 하며, 함수의 이름이 MEX 파일의 이름입니다. 일부 응용 프로그램에는 MEX 함수가 적합하지 않습니다. MATLAB은 컴파일된 언어에서 시간이 많이 소요되는 로우 레벨의 프로그래밍 작업을 줄여주는 생산성 높은 환경입니다. 일반적으로는 MATLAB에서 프로그래밍을 수행하십시오. 응용 프로그램에 필요한 경우가 아니면 MEX 함수를 사용하지 마십시오.
MEX 함수를 생성하려면 MATLAB API를 사용하여 프로그램을 작성하십시오. 이러한 라이브러리에 있는 함수를 사용하면 MEX 함수와 작업 공간 간에 데이터를 원활하게 전송할 수 있습니다. MATLAB API를 선택하려면 다음을 고려하십시오.
C++용 MATLAB Data API에 정의된 대로 최신 C++ 기능을 사용하여 MEX 함수를 만듭니다. 자세한 내용은 MATLAB에서 호출 가능한 C++ 함수 작성하기(MEX 파일) 항목을 참조하십시오.
MEX 함수가 MATLAB R2017b 이하 버전에서 실행되어야 하거나 사용자가 C 언어로 작업하는 것을 선호하는 경우 C Matrix API 및 C MEX API의 함수를 사용하십시오. 이러한 API는 MATLAB
mxArray
데이터 구조를 사용합니다. 이 페이지에 나와 있는 함수와 항목은mxArray
를 기반으로 합니다.
참고
C Matrix API나 MATLAB Data API 중 하나에서 함수를 선택하십시오. 이러한 API의 함수는 혼합하여 사용할 수 없습니다.
mex
함수를 사용하여 소스 파일을 실행 가능한 프로그램으로 빌드하십시오. MEX 파일을 다른 MATLAB 사용자와 공유할 수도 있습니다.
S-Function을 작성하는 방법에 대한 자세한 내용은 Simulink® 문서를 참조하십시오.
다른 사람이 만든 MEX 함수를 호출하려면 MEX 함수 호출하기 항목을 참조하십시오.
C/C++ 프로그램이 있고 이 프로그램에서 MATLAB 함수를 호출하려면 Engine API 중 하나를 사용하십시오. 자세한 내용은 다음을 참조하십시오.
C 프로그램에서 MATLAB 데이터를 읽고 쓰려면 MAT 파일 데이터를 읽어오는 C 프로그램 작성하기 항목을 참조하십시오.
C MEX API
mexFunction | C Matrix API를 사용하여 빌드된 C/C++ MEX 함수에 대한 진입점 |
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 스타일 출력 루틴 |
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 |
도움말 항목
C MEX 함수 작성하기
- C 소스 MEX 파일 arrayProduct.c 만들기
이 예제에서는 C Matrix API를 사용하여 빌드한
arrayProduct
C MEX 함수를 만드는 방법을 보여줍니다. - MEX 함수의 소스 코드 예제 표
MEX 함수 예제의 소스 코드에 대한 링크.
- MATLAB 데이터
MEX 파일에서
mxArray
사용. - Memory Management Issues
Rules for managing
mxArray
memory. - C Matrix API를 사용하여 C++ MEX 함수 생성하기
C Matrix API를 사용하여 빌드한 MEX 함수를 만들 때 고려해야 할 C++ 언어 문제. - 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.
빌드 환경 테스트하기
- C MEX 함수 빌드하기
이 예제에서는 예제 C MEX 함수
arrayProduct
를 빌드하는 방법을 보여줍니다.
C Matrix API 버전
- Upgrade MEX Files to Use Interleaved Complex API
MATLAB Version 9.4 (R2018a) supports an interleaved representation of complex numbers.
- 64비트 API를 사용하도록 MEX 파일 업그레이드하기
MATLAB 버전 9.2(R2017a)에서는 기본적으로 64비트 API를 사용하여 MEX 파일을 빌드합니다.
- Upgrade MEX Files to Use Graphics Objects
MATLAB Version 8.4 (R2014b) changes the data type of handles to graphics objects fromdouble
to object.
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.
문제 해결
빌드 오류
- 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. - MinGW-w64로 C/C++ MEX 파일을 컴파일할 때의 문제 해결과 제한 사항
MinGW-w64 컴파일러로 빌드한 MEX 파일 문제 해결. - 기호 mexFunction이 확인되지 않거나 정의되지 않음
모든 MEX 파일에는mexFunction
이 필요합니다.
런타임 오류
- 유효하지 않은 MEX 파일 오류
유효하지 않은 MEX 파일 오류 발생 시 수행할 작업. - MEX 버전 호환성
최상의 결과를 얻으려면 사용 중인 MATLAB 버전으로 빌드한 MEX 파일을 실행하십시오. - MEX 플랫폼 호환성
다른 소스에서 이진 MEX 파일을 가져오는 경우, 이 파일이 해당 파일을 실행하려는 플랫폼에 맞게 컴파일되었는지 확인해야 합니다. - 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.
디버그하기
- Microsoft Windows 플랫폼에서 디버그하기
Microsoft Visual Studio®를 사용한 디버그를 위한 제안 사항. - Debug on Mac 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.