주요 콘텐츠

MEX 애플리케이션 선택하기

R2026b

직접 작성한 C, C++ 또는 Fortran 프로그램을 내장 함수인 것처럼 MATLAB® 명령줄에서 호출할 수 있습니다. 이러한 프로그램을 MEX 함수라고 합니다. 일부 애플리케이션에는 MEX 함수가 적합하지 않습니다. MATLAB은 C, C++ 등의 컴파일 언어에서 시간이 많이 소요되는 로우 레벨의 프로그래밍 작업을 줄여주는 생산성 높은 환경입니다. 일반적으로는 MATLAB에서 프로그래밍을 수행하십시오.

참고

MATLAB R2023a 이상에서 C/C++ 라이브러리의 함수를 직접 호출하려면 clibPublishInterfaceWorkflow 항목을 참조하십시오.

MEX 함수를 생성하려면 MATLAB API를 사용하여 프로그램을 작성한 다음 mex 명령을 사용하여 빌드하십시오. API는 다음과 같은 기능을 제공합니다.

  • MEX 함수에서 MATLAB 함수를 호출합니다.

  • MATLAB에 매끄럽게 통합되어 MATLAB에서 입력값을 가져오고 결과를 반환합니다.

  • MATLAB 데이터형을 지원합니다.

MEX 용어

MEX는 MATLAB executable을 나타내며, 다음 표에 나와 있는 것처럼 여러 가지 의미를 갖습니다.

MEX 용어정의
MEX 파일C, C++ 또는 Fortran 소스 코드 파일입니다.
MEX 함수MATLAB 환경에서 실행되는, 동적으로 연결된 서브루틴입니다.
MEX APIMATLAB 환경에서 연산을 수행할 수 있도록 하는 C MEX API 및 Fortran MEX API의 함수입니다.
mex 빌드 스크립트소스 파일에서 이진 파일을 생성할 수 있도록 하는 MATLAB 함수입니다.

C++ MEX 함수

C++11 프로그래밍 기능을 지원하는 C++용 MATLAB Data API 및 C++ MEX API를 사용하여 C++ MEX 함수를 작성할 수 있습니다. matlab::data::Array 클래스를 기반으로 하는 다음 API는 데이터형 안전성(type safety)을 높이고, 배열 경계 검사를 수행하며, 코딩을 간소화하는 최신 C++ 구문을 지원합니다. API의 특징은 다음과 같습니다.

  • 공유 데이터와 인 플레이스 최적화(In-place Optimization)를 지원하여 성능을 개선합니다.

  • MATLAB 데이터 배열을 더 쉽게 생성할 수 있게 해주는 기본 C++ 유형을 지원합니다. C++에서 MATLAB을 호출하기 위한 feval 함수는 프리미티브 C++ 유형과 일반적인 인수 목록을 지원하는 반면, C 함수 mexCallMATLAB의 경우에는 입력값으로 구성된 배열(각 입력값은 mxArray여야 함)을 만들어야 합니다.

  • 원시 포인터에 대한 포인터 산술 연산 대신 이터레이터와 스마트 포인터를 지원하여 견고성을 향상시킵니다. 이를 통해 데이터 포인터에 대한 직접 액세스를 제거하여 메모리 손상 가능성을 줄여줍니다.

  • 행 우선 데이터와 열 우선 데이터를 지원하여 C/C++ 행 우선 데이터에 더 쉽게 맞출 수 있습니다.

자세한 내용은 MATLAB에서 호출 가능한 C++ 함수 작성하기(MEX 파일) 항목을 참조하십시오.

MATLAB R2017b 이하 버전용 C/C++ MEX 함수

MEX 함수가 MATLAB R2017b 이하 버전에서 실행되어야 하거나 또는 C 언어로 작업하는 것을 선호하는 경우 mxArray 데이터 구조체를 기반으로 하는 다음 라이브러리의 함수를 사용하여 소스 파일을 작성하십시오. 자세한 내용은 MATLAB에서 호출 가능한 C 함수 작성하기(MEX 파일) 항목을 참조하십시오.

주의

C Matrix API의 함수와 MATLAB Data API의 함수를 함께 사용하지 마십시오.

Fortran MEX 함수

Fortran MEX 함수를 작성하려면 mxArray 데이터 구조체를 기반으로 하는 Fortran MEX API 및 Fortran Matrix API를 사용하십시오.

자세한 내용은 MATLAB에서 호출 가능한 Fortran 함수 작성하기(MEX 파일) 항목을 참조하십시오.

참고 항목

| | |