주요 콘텐츠

코드 생성을 위해 MATLAB 코드 준비하기

C/C++ 코드를 생성하려면 코드 생성기는 동적으로 유형이 지정되는 MATLAB® 코드를 정적으로 유형이 지정되는 C/C++ 코드로 변환합니다. 동적 유형 언어에서는 런타임 시점에 지정된 변수의 클래스, 크기, 실수/복소수 여부가 변경될 수 있습니다. 이와 대조적으로, 정적 유형 언어는 컴파일 시에 변수 유형을 결정해야 합니다.

코드를 생성하기 전에 코드를 생성할 함수에 대해 파악하십시오. 이 함수를 진입점 함수 또는 주 함수라고 합니다. 코드 생성을 위해 코드를 준비하려면 다음을 수행합니다.

  1. 코드 생성을 위한 변수를 초기화합니다.

  2. 코드에 지원되지 않는 함수와 언어 기능이 있는지 검사합니다.

코드 생성을 위해 변수 초기화하기

생성 코드는 정적으로 유형이 지정되므로 사용하기 전에 코드에 있는 모든 변수를 초기화하여 코드 생성기가 생성 코드에 있는 변수를 올바르게 식별하고 할당할 수 있도록 하십시오. 이러한 문제 중 일부를 식별하려면 다음 라인을 코드에 포함시킵니다.

%#codegen
아래 표에는 코드 생성을 위한 코드에서 변수를 초기화할 때 발생할 수 있는 몇 개의 흔히 나타나는 오류가 나열되어 있습니다.

원래 코드문제수정된 코드
y = zeros(1,10);
y(3) = 1 + 2i;
y가 double형으로 정의되었지만, 복소수 double형 값이 할당됩니다.
y = complex(zeros(1,10));
y(3) = 1 + 2i;
for i = 1:N
    y(i,i) = i;
end
배열 y가 정의되지 않고 동적으로 확장됩니다.
y = zeros(N,N);
for i = 1:N
    y(i,i) = i;
end

특정 데이터형의 코드 생성을 위한 데이터 정의에 대한 자세한 내용은 Data Definition Considerations for Code Generation 항목과 C/C++ 코드 생성 시 변수 정의에 대한 모범 사례 항목을 참조하십시오.

코드에서 지원되지 않는 함수와 언어 기능 검사하기

코드 생성기는 대부분의 언어 기능과 함수를 지원합니다. C/C++ 코드 생성에 지원되는 함수 및 객체 항목을 참조하십시오. 코드에서 지원되지 않는 함수와 언어 기능을 확인하려면 다음을 수행합니다.

  1. 탭에서 MATLAB Coder™ 앱을 시작합니다. 또는 다음을 명령줄에 입력합니다.

    >> coder

  2. 진입점 함수 이름을 앱에 입력합니다. 이 단계에서는 부 함수를 추가하지 마십시오. 코드 생성기가 필요한 부 함수를 자동으로 포함시킵니다.

  3. 앱이 진입점 함수 또는 이 함수의 종속 항목과 관련된 문제를 식별하면 진입점 창에 경고 메시지가 표시됩니다. 메시지 옆에 있는 링크를 클릭하면 문제를 검토하고 수정할 수 있는 코드 생성 준비 툴이 별도의 창에 열립니다.

또는 진입점 함수에 대한 coder.screener 함수를 호출합니다. 명령줄에 다음을 입력합니다.

coder.screener('filename');

이 함수는 코드를 구문 분석하여 지원되지 않는 MATLAB 함수와 일부 지원되지 않는 언어 기능을 강조 표시합니다. coder.screener 항목을 참조하십시오.

코드에 지원되지 않는 함수가 포함되어 있는 경우 다음 우회적 해결 방법을 고려하십시오.

  • 코드 생성을 지원하는 대체 함수와 System object를 확인합니다.

  • 지원되지 않는 함수에 대한 사용자 지정 코드를 작성합니다.

  • coder.ceval을 사용하여 지원되지 않는 함수를 대체하는 사용자 지정 C 함수를 호출합니다.

  • coder.extrinsic을 사용하여 지원되지 않는 함수를 호출합니다.

이러한 우회적 해결 방법에 대한 자세한 내용은 오류 해결: 코드 생성 시 함수가 지원되지 않음 항목을 참조하십시오.

명령줄에서 고급 코드 생성 옵션 설정하기

구성 객체 coder.config와 함께 codegen 함수를 사용합니다. 빌드의 유형에 따라, coder.CodeConfig, coder.EmbeddedCodeConfig, coder.MexCodeConfig를 사용할 수도 있습니다.

특정 함수에 대한 코드 생성 고려 사항 알아보기

코드 가속화에 지원되는 함수에 대한 도움말 페이지에는 확장 기능이라는 제목의 섹션이 있습니다. 이 섹션에는 지원되지 않는 함수에 대한 코드를 생성할 때 특별히 고려해야 할 사항이 나열되어 있습니다. 예를 들어, interp2확장 기능 항목을 참조하십시오.

coder.extrinsic 호출하기

coder.extrinsic에 대한 호출은 함수를 외재적 함수로 선언합니다. 코드 생성기가 외재적 함수의 본문에 대해 코드를 생성하지 않고 대신 MATLAB 엔진을 사용하여 호출을 실행합니다.

참고 항목

| | | | | | | |

도움말 항목