Main Content

C++ 엔진 프로그램의 요소

C++용 MATLAB® Engine API를 사용하면 C++ 프로그램이 MATLAB과 동기식 또는 비동기식으로 상호 작용할 수 있습니다. 지원되는 연산은 다음과 같습니다.

  • MATLAB 시작.

  • 로컬 컴퓨터에서 MATLAB 공유 세션에 연결.

  • C++에서 전달된 입력 인수와 MATLAB에서 반환된 출력 변수를 사용해서 MATLAB 함수 호출.

  • MATLAB 기본 작업 공간에서 MATLAB 명령문 실행.

  • C++에서 MATLAB으로 또는 MATLAB에서 C++로 변수 전달.

    C++와 MATLAB 간에 전달되는 데이터 배열의 크기는 2GB로 제한됩니다. 이 크기 제한은 데이터뿐 아니라 프로세스 간에 전달되는 추가 정보에도 적용됩니다.

코딩 환경

C++용 MATLAB Engine API는 MATLAB 제품에 포함되어 있습니다. 전체 API는 C++ Engine API 항목을 참조하십시오. 이 API는 C++용 MATLAB Data API를 사용하여 MATLAB 데이터를 처리합니다.

API를 사용하기 전에 빌드 및 런타임 환경을 설정하십시오. 자세한 내용은 C++ 엔진 프로그램 빌드를 위한 요구 사항 항목을 참조하십시오.

코딩 패턴

이 예제에서는 다음 MATLAB 명령문과 동일한 명령을 실행하도록 C++ 코드를 작성하는 방법을 보여줍니다.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3,"Endpoints","discard");

이 C++ 코드는 데이터 배열로 구성된 벡터를 MATLAB movsum 함수에 전달한 후 그 결과를 반환합니다.

 C++ 엔진 코드

헤더 파일 포함하기

MATLAB 엔진 및 MATLAB 데이터 배열에 대한 헤더 파일을 추가합니다.

#include "MatlabEngine.hpp"
#include "MatlabDataArray.hpp"

MATLAB 세션 시작하기

MATLAB 세션을 시작하고 인스턴스에 대한 고유 포인터를 가져옵니다.

std::unique_ptr<MATLABEngine> matlabPtr = startMATLAB();

MATLAB 데이터 배열 만들기

MATLAB 데이터 배열 팩토리를 만들어 matlab::engine::MATLABEngine 멤버 함수에서 사용되는 데이터형을 생성합니다.

matlab::data::ArrayFactory factory;

데이터 배열 초기화하기

MATLAB 함수에 대한 입력 인수로 사용할 MATLAB 데이터 배열로 구성된 벡터를 만듭니다. 각 인수는 벡터에 포함된 배열입니다.

// Create a vector of MATLAB data arrays for arguments    
std::vector<matlab::data::Array> args({
    factory.createArray<double>({ 1, 10 }, { 4, 8, 6, -1, -2, -3, -1, 3, 4, 5 }),
    factory.createScalar<int32_t>(3),
    factory.createCharArray("Endpoints"),
    factory.createCharArray("discard")
});

MATLAB 함수를 호출하고 결과를 반환하기

MATLABEngine::feval 멤버 함수를 사용하여 입력 인수와 함께 MATLAB movsum 함수를 호출합니다. 반환되는 결과를 double형의 MATLAB 데이터 배열로 정의합니다.

// Call MATLAB function with arguments and return results
matlab::data::TypedArray<double> result = matlabPtr->feval(u"movsum", args);

참고 항목

|

관련 항목