주요 콘텐츠

codegen

MATLAB 코드에서 C 또는 C++ 코드 생성

설명

codegen fun은 디폴트 코드 생성 설정을 사용하여 MATLAB® 함수 fun에 대한 C MEX 함수를 생성합니다. 이 구문은 fun이 입력 인수를 받지 않거나, MATLAB 함수 본문 내에서 arguments 블록 또는 assert 문을 사용하여 입력 인수를 정의한 경우 사용합니다.

예제

codegen options funoptions 인수를 사용하여 지정된 코드 생성 설정에 따라 MATLAB 함수 fun에 대한 C 또는 C++ 코드를 생성합니다. 예를 들어, options 인수를 사용하여 생성 코드의 언어(C 또는 C++) 또는 출력 유형(정적 라이브러리, 동적 라이브러리, 실행 파일 또는 MEX 함수)을 지정할 수 있습니다. 이 구문은 fun이 입력 인수를 받지 않거나, MATLAB 함수 본문 내에서 arguments 블록 또는 assert 문을 사용하여 입력 인수를 정의한 경우 사용합니다.

예제

codegen options fun -args inputsoptions 인수에서 지정된 코드 생성 설정에 따라 MATLAB 함수 fun에 대한 C/C++ 코드를 생성합니다. inputs 인수는 입력 유형을 지정하는 데 사용됩니다.

예제

codegen options fun -args inputs -nargout numOut은 지정된 코드 생성 설정, 입력 인수, 출력 인수 개수 numOut을 사용하여 MATLAB 함수 fun에 대한 C/C++ 코드를 생성합니다. 이 구문은 일부 MATLAB 함수 출력에 대해 코드를 생성하지 않으려는 경우에 사용합니다. funvarargout을 사용하는 경우 -nargout numOut을 지정해야 합니다.

예제

codegen options advSyntax는 여러 개의 진입점 함수에 대한 C/C++ 코드를 생성하며 생성된 코드는 여러 시그니처와 지원 파일을 포함합니다. 이 구문을 사용하여 MATLAB Coder™ 프로젝트에 대한 코드를 생성할 수도 있습니다.

예제

예제

모두 축소

MATLAB 함수 helloWorld를 살펴봅니다. 이 함수는 입력 인수를 받지 않으며 1과 100 사이의 정수형 난수를 출력합니다. 함수 선언 뒤에 있는 %#codegen 지시문은 MATLAB 코드 분석기가 코드 생성과 관련된 경고와 오류를 식별하도록 합니다.

function out = helloWorld %#codegen
out = randi(100);
end

helloWorld MATLAB 함수에 대한 C MEX 함수를 생성합니다. codegen 명령은 기본적으로 C MEX 함수를 생성합니다.

codegen helloWorld
Code generation successful.

생성된 MEX 함수를 명령줄에서 실행합니다. 이 함수는 1에서 100 사이의 난수를 생성합니다.

helloWorld_mex
ans =

    91

두 값의 합을 반환하는 MATLAB 함수 myaddarg를 살펴봅니다. 함수 선언 뒤에 있는 %#codegen 지시문은 MATLAB 코드 분석기가 코드 생성과 관련된 경고와 오류를 식별하도록 합니다. 이 함수는 arguments 블록을 사용하여 u는 double형 실수 값으로 구성된 1×4 행 벡터이고 v는 double형의 실수형 스칼라임을 선언합니다.

function y = myaddarg(u,v) %#codegen
arguments
    u (1,4) double
    v (1,1) double
end
y = u + v;
end

myaddarg 함수에 대한 독립 실행형 C++ 정적 라이브러리를 생성합니다. 정적 라이브러리를 지정하기 위해 -config:lib 옵션을 사용하고, C++를 지정하기 위해 lang:c++ 옵션을 사용합니다. 코드 생성기가 폴더 codegen/lib/myaddarg에 C++ 소스 코드, 라이브러리, 오브젝트 및 헤더 파일을 생성합니다.

codegen -config:lib -lang:c++ myaddarg
Code generation successful.

두 값의 합을 반환하는 MATLAB 함수 myadd를 살펴봅니다. 함수 선언 뒤에 있는 %#codegen 지시문은 MATLAB 코드 분석기가 코드 생성과 관련된 경고와 오류를 식별하도록 합니다.

function y = myadd(u,v) %#codegen
y = u + v;
end

MATLAB 명령줄에서 codgen 명령을 호출합니다. -config:lib 옵션을 사용하여 정적 라이브러리를 생성합니다. 코드 생성기는 기본적으로 C 코드를 생성합니다. -args를 사용하여, myadd 함수가 double형 스칼라 입력 인수 2개를 받도록 지정합니다. 명령줄에서 입력 인수를 지정하는 방법에 대한 자세한 내용은 Specify Input Types at the Command Line 항목을 참조하십시오.

codegen -config:lib myadd -args {0,0}
Code generation successful.

생성된 C 파일에서 myadd의 정의를 살펴봅니다. 코드 생성기는 폴더 codegen/lib/myadd에 이 파일을 생성합니다.

/* Function Definitions */
/*
 * Arguments    : double u
 *                double v
 * Return Type  : double
 */
double myadd(double u, double v)
{
  return u + v;
}

함수 myops를 살펴봅니다. 이 함수는 네 가지 서로 다른 연산을 수행하며 한 개에서 네 개의 출력을 제공할 수 있습니다. 함수 선언 뒤에 있는 %#codegen 지시문은 MATLAB 코드 분석기가 코드 생성과 관련된 경고와 오류를 식별하도록 합니다.

function varargout = myops(a,b) %#codegen
varargout{1} = a+b;
varargout{2} = a*b;
varargout{3} = a/b;
varargout{4} = a-b;
end

myops MATLAB 함수에 대한 C MEX 함수를 생성합니다. codegen 명령은 기본적으로 C MEX 함수를 생성합니다. -args를 사용하여 입력 인수를 지정합니다.

  • a를 최대 길이가 10인 가변 길이 행 벡터로 지정하려면 coder.typeof를 사용합니다.

  • b를 double형 스칼라로 지정하려면 샘플 값으로 0을 사용합니다.

명령줄에서 입력 인수를 지정하는 방법에 대한 자세한 내용은 Specify Input Types at the Command Line 항목을 참조하십시오.

myopsvarargout을 사용하므로 -nargout 인수를 포함해야 합니다. 코드 생성기에 처음 세 개 출력 변수에 대한 코드를 생성하도록 지시하려면 -nargout 3을 사용하십시오. 생성 코드에서 입력 인수 개수 또는 출력 인수 개수를 제어하는 방법에 대한 자세한 내용은 Specify Number of Input or Output Arguments to Entry-Point Functions 항목을 참조하십시오.

codegen myops -args {coder.typeof(0,[1 10],[false true]),0} -nargout 3
Code generation successful.

생성된 MEX 함수를 세 개의 출력을 지정하여 명령줄에서 실행합니다. 생성된 MEX 함수가 출력을 올바르게 생성합니다.

[x,y,z] = myops_mex(3,4)
x =

     7


y =

    12


z =

    0.7500

생성된 MEX 함수를 네 개의 출력을 지정하여 명령줄에서 실행합니다. 생성된 MEX 함수가 오류를 생성합니다.

[x,y,z,a] = myops_mex(3,4)
Too many output arguments for entry-point 'myops'.

두 값의 합을 반환하는 MATLAB 함수 myAdd를 살펴봅니다.

function y = myAdd(u,v) %#codegen
y = u + v;
end

MATLAB 명령줄에서 codgen 명령을 호출합니다. 정적 라이브러리를 생성하기 위해 -config:lib 옵션을 사용하고, C++ 코드를 생성하기 위해 -lang:c++ 옵션을 사용합니다. 다음을 사용하여 myadd에 대해 세 개의 입력 집합을 지정합니다.

  • 두 개의 double형 스칼라를 지정하기 위한 -args {0,0}

  • 두 개의 부호 있는 8비트 정수를 지정하기 위한 -args {int8(0),int8(0)}

  • double형 스칼라 하나와 최대 크기가 10×10인 가변 크기 배열 하나를 지정하기 위한 -args {0,coder.typeof(0,[10,10])

명령줄에서 입력 인수를 지정하는 방법에 대한 자세한 내용은 Specify Input Types at the Command Line 항목을 참조하십시오.

codegen -lang:c++ -config:lib myadd -args {0,0} -args {int8(0),int8(0)} -args {0,coder.typeof(0,[10,10])}
Code generation successful.

폴더 codegen/lib/myadd에 생성된 헤더 파일 myadd.h를 살펴봅니다. 코드 생성기가 서로 다른 세 가지 입력 집합에 대해 myadd 함수의 세 가지 버전을 선언합니다.

// Function Declarations
real_T myadd1(real_T u, real_T v);

int8_T myadd2(int8_T u, int8_T v);

void myadd3(real_T u, const real_T v[100], real_T y[100]);
자세한 내용은 Generate Code for Functions with Multiple Signatures 항목을 참조하십시오.

난수 스칼라 값을 생성하는 MATLAB 함수 myrand를 살펴봅니다.

function r = myrand() %#codegen
r = rand();
end

C 메인 함수를 포함하는 파일 main.c를 살펴봅니다. C 메인 함수는 myrand MATLAB 함수에서 생성된 C 함수를 호출합니다.

/* main.c */
#include <stdio.h>
#include <stdlib.h>
#include "myrand.h"
#include "myrand_initialize.h"
#include "myrand_terminate.h"
int main()
{
    myrand_initialize();
    printf("myrand value %g\n", myrand());
    myrand_terminate();
    return 0;
}

MATLAB 명령줄에서 codgen 명령을 호출합니다. -config:exe 옵션을 사용하여 실행 파일을 생성합니다. 코드 생성기는 기본적으로 C 코드를 생성합니다. 사용자 지정 소스 코드 파일 main.c를 포함하도록 코드 생성기에 지시합니다. 코드 생성기가 작업 폴더에 C 실행 파일을 만듭니다.

codegen -config:exe myrand main.c

system 함수와 ispc 함수를 사용하여, 생성된 실행 파일을 테스트합니다. 실행 파일이 예상된 출력을 생성합니다.

if ispc
    system("myrand.exe")
else
    system("./myrand")
end
myrand value 0.814724 

ans =

     0

자세한 예제는 Use an Example C Main in an Application 항목을 참조하십시오.

입력 인수

모두 축소

코드 생성 옵션으로, 옵션 값 또는 공백으로 구분된 옵션 값 목록으로 지정됩니다. 옵션 값은 임의 순서로 입력할 수 있습니다. 옵션이 충돌하는 경우 가장 오른쪽 옵션이 우선합니다.

코드 구성 객체 지정하기

코드 구성 객체를 지정하려면 -config 옵션을 사용합니다. 이 객체만 사용하거나 다른 옵션 값과 함께 사용할 수 있습니다. Configure Code Generation and Build Settings 항목을 참조하십시오. 코드 생성기는 코드 구성 객체를 사용하여 지정한 옵션보다 codegen 함수와 함께 지정한 옵션을 우선적으로 적용합니다.

옵션 값설명
-config configObject

코드 생성 설정이 포함된 구성 객체를 지정합니다. 코드 구성 객체를 만들려면 coder.config 함수를 사용하십시오. 예를 들어, 정적 라이브러리를 위한 코드 구성 객체를 만들려면 다음 명령을 사용하십시오.

cfg = coder.config("lib");
그런 다음, 생성된 객체를 codegen에 전달하십시오. 예를 들면 다음과 같습니다.
codegen -config cfg foo

생성 코드의 언어 제어하기

다음 표에는 생성 코드의 언어를 제어하는 옵션이 나와 있습니다. 기본적으로, 코드 생성기는 C99 (ISO) 언어 표준과 호환되는 C 코드를 생성합니다. C++ 코드를 생성할 경우 코드 생성기는 기본적으로 C++11 (ISO) 언어 표준과 호환되는 C++ 코드를 생성합니다.

C 코드를 생성할 경우 C++ 언어 표준은 지원되지 않습니다. C++ 코드를 생성하면서 C 언어 표준을 지정하면, 코드 생성기는 선택한 C 표준에서 제공되는 C 수학 라이브러리와 C++03 언어 기능을 사용합니다. 지원되는 언어 표준에 대한 자세한 내용은 Change Language Standard Used for Code Generation 항목을 참조하십시오.

옵션 값설명
-lang:c

C 코드를 생성합니다.

-lang:c++

C++ 코드를 생성합니다.

-std:c89/c90

C89/90 (ANSI) 언어 표준과 호환되는 코드를 생성합니다.

-std:c99

C99 (ISO) 언어 표준과 호환되는 코드를 생성합니다. 이 언어 표준은 C 코드를 생성할 때 디폴트 값입니다.

-std:c++03

C++03 (ISO) 언어 표준과 호환되는 코드를 생성합니다.

-std:c++11

C++11 (ISO) 언어 표준과 호환되는 코드를 생성합니다. 이 언어 표준은 C++ 코드를 생성할 때 디폴트 값입니다.

-std:c++14

C++14 (ISO) 언어 표준과 호환되는 코드를 생성합니다.

-std:c++17

C++17 (ISO) 언어 표준과 호환되는 코드를 생성합니다.

-std:c++20

C++20 (ISO) 언어 표준과 호환되는 코드를 생성합니다.

출력 유형 제어하기

다음 표에는 코드 생성기에서 생성되는 코드의 유형을 제어하는 옵션이 나와 있습니다. 기본적으로 코드 생성기는 MEX 함수를 생성하고 생성 코드를 빌드합니다.

옵션 값설명
-config:dll

동적 C/C++ 라이브러리를 생성합니다.

-config:exe

C/C++ 실행 파일을 생성합니다.

-config:lib

정적 C/C++ 라이브러리를 생성합니다.

-config:mex

MEX 함수를 생성합니다.

-c

소스 코드만 생성합니다. 코드 생성기는 make 명령을 호출하거나 오브젝트 코드를 빌드하지 않습니다. 예를 들어, foo 함수에 대해 정적 C 라이브러리를 생성하면서 생성 코드를 빌드하지 않고 소스 코드만 생성하려면 다음 명령을 사용합니다.

codegen -config:lib -c foo

-jit

JIT(Just-in-Time) 컴파일을 사용하여 MATLAB 코드의 추상 표현을 포함하는 JIT MEX 함수를 생성합니다. JIT 컴파일을 사용하면 MEX 함수 생성 속도를 높일 수 있습니다. 이 옵션은 MEX 함수를 생성하는 경우에만 사용할 수 있습니다. 이 옵션은 사용자 지정 코드 포함 또는 OpenMP 라이브러리 사용과 같은 일부 코드 생성 옵션과 호환되지 않습니다.

JIT 컴파일을 사용하여 MEX 생성 속도 높이기 항목을 참조하십시오.

전역 변수 지정하기

-globals 옵션을 사용하여 명령줄에서 전역 변수를 지정할 수 있습니다. MATLAB 작업 공간에서도 전역 변수를 정의하고 초기화할 수 있습니다. Generate Code for Global Variables 항목을 참조하십시오.

옵션 값설명
-globals globalArray

코드를 생성하는 MATLAB 함수에 사용되는 전역 변수를 정의하고 초기화합니다.

globalArray는 전역 변수 이름과 초기값으로 구성된 셀형 배열입니다. 이 셀형 배열의 형식은 {global1,value1,global2,value2,...}입니다. 예를 들면 다음과 같습니다.

codegen foo -globals {"A",ones(4),"B",[1 2 3]} -args {0}

또는 coder.typeof 함수를 사용하여 전역 변수 유형을 지정합니다. 이 경우 -globals 옵션에 전달하는 셀형 배열의 형식은 {global1,{type1,value1},global2,{type2,value2},...}입니다. 예를 들면 다음과 같습니다.

codegen foo -globals {"A",{coder.typeof(0,[4 4]),ones(4)}}

최적화 지정하기

다음 표에는 생성 코드의 최적화를 지정하는 옵션이 나와 있습니다. 생성 코드를 최적화하는 데 사용할 수 있는 추가 전략에 대한 자세한 내용은 Optimize Generated C/C++ and MEX Code 항목을 참조하십시오.

옵션 값설명

-O enable:inline

-O disable:inline

생성 코드에서 함수 인라인 처리를 활성화하거나 비활성화합니다. 기본적으로 코드 생성기는 인라인 처리를 사용합니다. 함수 인라인 처리에 대한 자세한 내용은 Control Inlining to Fine-Tune Performance and Readability of Generated Code 항목을 참조하십시오.

함수 호출을 항상 인라인으로 처리하면 코드 생성 최적화에서 더 많은 코드를 처리해야 하므로 코드 생성 시간이 증가할 수 있습니다.

-O enable:openmp

-O disable:openmp

생성 코드에서 OpenMP 라이브러리의 사용을 활성화하거나 비활성화합니다. 이 최적화를 활성화했고 OpenMP 라이브러리를 사용할 수 있는 경우, 코드 생성기는 다중 스레드에서 실행할 수 있는 parfor 루프를 생성합니다. 기본적으로 코드 생성기는 OpenMP 라이브러리를 사용할 수 있으면 이를 사용합니다.

OpenMP 최적화를 비활성화했거나 OpenMP 라이브러리를 사용할 수 없는 경우, 코드 생성기는 parfor 루프를 for 루프처럼 처리하여 단일 스레드에서 실행되는 코드를 생성합니다.

Control Compilation of parfor-Loops 항목을 참조하십시오.

-rowmajor

행 우선 배열 레이아웃을 사용하는 코드를 생성합니다. 기본적으로 코드 생성기는 열 우선 배열 레이아웃을 사용합니다. 자세한 내용은 Generate Code That Uses Row-Major Array Layout 항목을 참조하십시오.

디버그 옵션 지정하기

다음 표에는 생성 코드 및 코드 생성 프로세스를 디버그하는 데 사용할 수 있는 옵션이 나와 있습니다. 독립 실행형 코드 또는 가속화된 MEX 함수를 생성하기 전, MEX 함수를 생성하고 실행하여 MATLAB 코드에 규정 준수 문제가 있는지 검사하는 것이 가장 좋습니다. Check for Issues in MATLAB Code Using MEX Functions 항목을 참조하십시오.

옵션 값설명
-g

C/C++ 컴파일러에 대해 디버그 모드를 활성화합니다. 디버그 모드를 활성화하면, 코드 생성기는 컴파일러가 사용하는 일부 최적화를 비활성화하며, 따라서 코드 생성 속도가 빨라질 수 있습니다. 그러나 생성 코드의 실행 속도는 더 느려질 수 있습니다.

-profile

MATLAB 프로파일러를 사용하여 생성된 MEX 함수를 프로파일링합니다. Profile MEX Functions by Using MATLAB Profiler 항목을 참조하십시오.

-report

코드 생성 리포트를 생성합니다. 이 옵션이 지정되지 않은 경우 codegen은 오류 메시지 또는 경고 메시지가 발생하거나 사용자가 -launchreport 옵션을 지정한 경우에만 리포트를 생성합니다.

Embedded Coder®가 있는 경우 이 옵션은 코드 대체 리포트의 생성도 활성화합니다.

-reportinfo info

코드 생성에 대한 정보를 기본 MATLAB 작업 공간의 변수 info로 내보냅니다. Access Code Generation Report Information Programmatically 항목을 참조하십시오.

-silent코드 생성이 경고 없이 성공할 경우 메시지의 표시를 차단하려면 이 최적화를 활성화합니다. 이 옵션은 경고와 오류 메시지는 차단하지 않습니다.
-test testFile

testFile을 실행하고 원래 MATLAB 함수에 대한 호출을 MEX 함수에 대한 호출로 대체합니다. 이 옵션을 사용하는 것은 coder.runTest를 실행하는 것과 동일합니다.

이 옵션은 MEX 함수를 생성하는 경우에만 지원됩니다.

Embedded Coder 라이선스가 있는 경우 SIL(Software-in-the-Loop) 또는 PIL(Processor-in-the-Loop) 검증을 위한 코드를 생성할 때에도 이 옵션을 사용할 수 있습니다. Code Verification Through Software-in-the-Loop and Processor-in-the-Loop Execution (Embedded Coder) 항목을 참조하십시오.

-v

코드 생성 상태와 타깃 빌드 로그 메시지를 표시합니다.

생성된 파일의 이름과 위치 제어하기

다음 표에는 코드 생성기에서 생성되는 파일의 디폴트 기본 이름(base name)과 위치를 변경하는 데 사용할 수 있는 옵션이 나와 있습니다.

옵션 값설명
-d folder

생성된 파일을 folder로 지정된 절대 경로 또는 상대 경로에 저장합니다. 폴더 이름은 다음을 포함해서는 안 됩니다.

  • 공백(일부 운영 체제 구성에서 코드 생성 실패의 원인이 될 수 있음).

  • 7비트 ASCII 이외의 문자(예: 일본어 문자)

  • 별표(*), 물음표(?), 달러 기호($), 숫자 기호(#)

folder에 의해 지정된 폴더가 존재하지 않는 경우 코드 생성기는 해당 폴더를 생성합니다.

-o basename

기본 이름 basename을 사용하여 MEX, 라이브러리, 실행 파일을 생성합니다. 기본 이름은 공백을 포함해서는 안 됩니다. 공백이 있으면 일부 운영 체제 구성에서 코드 생성이 실패할 수 있습니다. MEX 함수를 생성하는 경우 basename은 유효한 MATLAB 함수 이름이어야 합니다.

코드 생성 경로 수정하기

MATLAB 함수 또는 사용자 지정 코드 파일을 찾기 위해 코드 생성기가 추가 폴더를 검색하도록 지시하려면 -I 옵션을 사용합니다.

옵션 값설명
-I path

path를 코드 생성 경로의 시작 부분에 추가합니다. 코드 생성기는 MATLAB 함수 또는 사용자 지정 C/C++ 파일을 검색할 때 코드 생성 경로를 우선 검색합니다. 코드 생성기가 코드 생성 경로에서 클래스를 검색하지 않으므로, 클래스는 MATLAB 검색 경로에 있어야 합니다. 자세한 내용은 Paths and File Infrastructure Setup 항목을 참조하십시오.

7비트 ASCII 이외의 문자(예: 일본어 문자)가 경로에 포함된 경우 코드 생성기가 이 경로에서 파일을 찾지 못할 수 있습니다.

여러 경로를 포함하려면 포함시킬 각 경로의 앞에 -I를 사용합니다. 경로를 문자형 벡터 또는 string형으로 전달하십시오. 예를 들면 다음과 같습니다.

codegen -I "C:\Project" -I "C:\Custom Files" foo

생성된 코드 내보내기

다음 표에는 생성 코드 또는 코드 생성 설정을 다른 개발 환경이나 MATLAB Coder 앱에 전송하는 데 사용할 수 있는 옵션이 나와 있습니다.

옵션 값설명
-package zipFile

생성된 독립 실행형 코드와 관련 종속 항목을 이름이 zipFile인 압축 ZIP 파일로 패키징합니다. 이 ZIP 파일을 사용하여 코드 파일을 다른 개발 환경으로 이전하여 패키징을 풀고 재빌드할 수 있습니다.

이 옵션을 사용하는 것은 packNGo 함수를 사용하는 것과 동일합니다.

-toproject projectFile

진입점 함수의 이름, -args-nargout 지정, codegen 옵션 및 모든 고급 구문을 이름이 projectFileMATLAB Coder 프로젝트 파일에 저장합니다. codegen 지정을 MATLAB Coder 앱으로 전송하려면 이 명령을 사용하십시오. 다음 명령을 사용하여 이 프로젝트 파일로 코드를 생성할 수도 있습니다.

codegen projectFile

Convert codegen Command to Equivalent MATLAB Coder Project 항목을 참조하십시오.

숫자형 변환 수행하기

다음 표에는 MATLAB 코드의 숫자형 변환을 수행하는 데 사용할 수 있는 옵션이 나와 있습니다. 이들 옵션을 사용하려면 Fixed-Point Designer™ 라이선스가 있어야 합니다. 이 옵션은 네임스페이스에 속한 진입점 함수에는 지원되지 않습니다.

옵션 값설명
-config:single

단정밀도 MATLAB 코드를 생성합니다.

-double2single singleConfig

singleConfig(coder.SingleConfig 객체여야 함)에서 지정한 설정을 사용하여 단정밀도 MATLAB 코드를 생성합니다.

코드 생성기가 폴더 codegen/fun/single에 파일을 생성합니다. 여기서 fun은 진입점 함수의 이름입니다.

이 옵션을 지정하고 코드 생성기에 독립 실행형 코드를 생성하도록 지시할 경우 코드 생성기는 폴더 codgen/outputType/subfolder에 단정밀도 C/C++ 코드도 생성합니다. 여기서 각 항목은 다음과 같습니다.

  • outputType은 다음과 같이 지정됩니다.

    • MEX 함수의 경우 mex

    • C/C++ 라이브러리의 경우 lib

    • C/C++ 동적 라이브러리의 경우 dll

    • C/C++ 실행 파일의 경우 exe

  • subfolder는 MATLAB 함수 이름 뒤에 접미사가 뒤따르는 이름입니다. 이 접미사는 singleConfig 객체의 OutputFileNameSuffix 속성을 사용하여 지정합니다.

자세한 내용은 Generate Single-Precision MATLAB Code 항목을 참조하십시오.

-float2fixed float2fixedConfig

float2fixedConfig(coder.FixPtConfig 객체여야 함)에서 지정한 설정을 사용하여 고정소수점 코드를 생성합니다.

이 옵션을 지정하고 코드 생성기에 독립 실행형 코드를 생성하도록 지시할 경우 코드 생성기는 고정소수점 C/C++ 코드를 생성합니다. 코드 생성기가 폴더 codegen/outputType/fun_fixpt에 파일을 생성합니다. 여기서 fun은 진입점 함수의 이름이고 outputType은 다음과 같이 지정됩니다.

  • MEX 함수의 경우 mex

  • 임베드 가능한 C/C++ 실행 파일의 경우 exe

  • 임베드 가능한 C/C++ 라이브러리의 경우 lib

  • C/C++ 동적 라이브러리의 경우 dll

이 옵션을 지정하고 독립 실행형 코드를 생성하지 않을 경우 코드 생성기는 폴더 codegen/fun/fixpt에 고정소수점 MATLAB 코드를 생성합니다.

이 옵션을 사용하려면 float2fixedConfig 객체의 TestBenchName 속성을 사용하여 테스트 파일을 지정해야 합니다.

자세한 내용은 Convert MATLAB Code to Fixed-Point C Code 항목을 참조하십시오.

-singleC

단정밀도 C/C++ 코드를 생성합니다. 자세한 내용은 Generate Single-Precision C Code at the Command Line 항목을 참조하십시오.

CUDA 코드 생성하기

다음 표에는 MATLAB 코드에서 CUDA® 코드를 생성할 때 사용할 수 있는 옵션이 나와 있습니다. 이들 옵션을 사용하려면 GPU Coder™ 라이선스가 있어야 합니다.

옵션 값설명
-config gpuconfig

CUDA 코드 생성 설정이 포함된 구성 객체를 지정합니다. 이 구성 객체를 생성하려면 coder.gpuConfig (GPU Coder) 함수를 사용하십시오.

Generate Code Using the Command Line Interface (GPU Coder) 항목을 참조하십시오.

-gpuprofile

GPU 성능 분석기를 사용하여 생성 코드를 프로파일링합니다.

단일 명령을 사용하여 CUDA 코드를 생성하고 프로파일링을 수행하려면 -gpuprofile 옵션과 -test 옵션을 사용하여 codegen을 실행합니다.

MEX가 아닌 타깃을 프로파일링하려면 Embedded Coder 라이선스가 있어야 합니다.

자세한 내용은 GPU 성능 분석기 (GPU Coder) 항목을 참조하십시오.

코드를 생성할 MATLAB 함수로, 함수 이름으로 지정됩니다. 이 함수는 현재 작업 폴더 또는 경로에 존재해야 합니다. MATLAB 네임스페이스에 속한 함수를 지정하려면 함수 이름의 시작 부분에 네임스페이스 이름을 추가하고 그 뒤에 점을 추가합니다. 네임스페이스도 현재 작업 폴더 또는 경로에 존재해야 합니다. MATLAB 파일이 7비트 ASCII 이외의 문자(예: 일본어 문자)가 포함된 경로에 있는 경우 코드 생성기가 해당 파일을 찾지 못할 수 있습니다.

예: codegen myFunction

예: codegen myNamespace.myFunction

MATLAB 함수 fun에 대한 입력 인수로, 샘플 값 또는 coder.Type 객체로 구성된 셀형 배열로 지정됩니다. 셀형 배열 내 각 요소의 위치가 함수 정의의 입력 인수 위치와 일치해야 합니다.

coder.Type 객체를 만들려면 coder.typeof 또는 coder.newtype을 사용하십시오. 함수가 인수를 받지 않음을 나타내려면 inputs를 빈 셀형 배열 {}로 지정하십시오.

함수 본문에서 arguments 블록 또는 assert 문을 사용하여 입력 인수를 정의하는 경우에는 inputs 인수는 지정할 필요가 없습니다. 자세한 내용은 Use Function Argument Validation to Specify Entry-Point Input Types 항목과 Specify Input Types Using assert Statements in MATLAB Code 항목을 참조하십시오.

예: codegen foo -args {0}

예: codegen foo2 -args {0, ones(3,5)}

예: codegen foo3 -args {0, ones(3,5), coder.typeof("hello")}

MATLAB 함수 fun에 대해 생성할 출력 인수 개수로, 정수로 지정됩니다. 코드 생성기는 지정된 개수의 출력 인수를 생성하며, 이때 MATLAB 함수 정의에 나타나는 순서대로 생성합니다. 함수 funvarargout을 사용할 경우, 출력 인수 개수를 지정해야 합니다. Specify Number of Input or Output Arguments to Entry-Point Functions 항목을 참조하십시오.

예: codegen foo -nargout 2

예: codegen foo -args {0} -nargout 2

고급 코드 생성 구문으로, 구문 프래그먼트 또는 공백으로 구분된 구문 프래그먼트 목록으로 지정됩니다. 다음 표에는 임의의 순서로 결합할 수 있는 구문 프래그먼트가 나와 있습니다.

구문 프래그먼트설명
fun1 -args inputs1 ... funN inputsN여러 진입점 함수에 대한 코드를 생성합니다.
fun -args inputs1 ... -args inputsN하나의 진입점 함수에 대해 여러 시그니처를 생성합니다.
file1 ... fileN

생성 코드에 사용자 지정 소스 파일을 포함합니다. 다음 유형의 파일을 지정할 수 있습니다.

  • C 파일(.c)

  • C++ 파일(.cpp)

  • 헤더 파일(.h)

  • 오브젝트 파일(.o 또는 .obj)

  • 라이브러리 (.a, .so, .dylib 또는 .lib)

사용자 지정 파일이 7비트 ASCII 이외의 문자(예: 일본어 문자)가 포함된 경로에 있는 경우 코드 생성기 명령이 해당 파일을 찾지 못할 수 있습니다.

projectFile

CODERPRJ 파일로 지정된 MATLAB Coder 프로젝트에 대한 코드를 생성합니다. 코드 생성기는 프로젝트 파일에 저장된 진입점, 입력 유형, 코드 생성 옵션을 사용하여 코드를 생성합니다. Convert codegen Command to Equivalent MATLAB Coder Project 항목을 참조하십시오.

이 구문은 다른 구문과 함께 사용할 수 없습니다.

제한 사항

  • MATLAB 스크립트에 대한 코드는 생성할 수 없습니다. 코드를 생성하려면 스크립트를 함수로 재작성하십시오.

  • 프라이빗 폴더나 @ 폴더는 MATLAB에서 특수한 의미를 갖기 때문에 이러한 폴더가 현재 폴더이면 코드 생성이 지원되지 않습니다. @ 폴더의 메서드와 프라이빗 폴더의 함수를 호출하는 코드는 생성할 수 있습니다.

  • codegen은 동일한 코드 또는 프로젝트에 대해 동일한 유형의 출력값을 생성할 때마다 이전 빌드에서 파일을 제거합니다. 이전 빌드의 파일을 보존하려면 다른 빌드를 시작하기 전에 해당 파일을 다른 위치에 복사하십시오.

  • -d 옵션을 사용하여 위치를 지정하지 않으면, 코드 생성기는 codgen/outputType/functionName 폴더에 C/C++ 소스, 헤더 및 오브젝트 파일을 생성합니다. 여기서 functionNamecodegen 명령에 전달한 첫 번째 함수의 이름이고 outputType은 다음 중 하나로 지정됩니다.

    • MEX 함수의 경우 mex

    • C/C++ 정적 라이브러리의 경우 lib

    • C/C++ 동적 라이브러리의 경우 dll

    • C/C++ 실행 파일의 경우 exe

    코드 생성기는 생성된 MEX 함수를 작업 폴더에 저장합니다.

    예를 들어, 다음 codegen 명령을 살펴보겠습니다.

    codegen -config:lib fun1 fun2

    코드 생성기는 codgen/lib/fun1 폴더에 C 소스, 헤더 및 오브젝트 파일을 만듭니다.

  • 독립 실행형 코드를 생성할 때 -o 옵션을 사용하여 출력 파일 이름을 지정하지 않으면, 코드 생성기는 코드를 생성하는 MATLAB 함수의 이름으로 시작하는 소스, 헤더 및 오브젝트 파일을 만듭니다.

  • MEX 함수를 생성할 때 -o 옵션을 사용하여 출력 파일 이름을 지정하지 않으면, 코드 생성기는 왼쪽에서 오른쪽 순서로 첫 번째 MATLAB 함수의 이름에 _mex를 추가합니다. 예를 들어, 다음 codegen 명령으로 생성된 MEX 함수의 이름은 foo_mex로 시작합니다.

    codegen foo bar

  • 코드 생성기는 생성 파일에 해당 플랫폼 및 빌드에 따라 확장자를 추가합니다.

    • C/C++ 정적 라이브러리의 경우 .a 또는 .lib

    • C/C++ 실행 파일의 경우 .exe 또는 확장자 없음

    • Microsoft® Windows® 플랫폼 기반 C/C++ 동적 라이브러리의 경우 .dll

    • Linux® 플랫폼 기반 C/C++ 동적 라이브러리의 경우 .so

    • Mac 플랫폼 기반 C/C++ 동적 라이브러리의 경우 .dylib

    • 생성된 MEX 함수의 경우 해당 플랫폼에 따른 확장자

  • 함수 구문을 사용하여 codegen을 호출할 수 있습니다. codegen 인수를 문자형 벡터 또는 string형 스칼라로 지정하십시오. 예를 들면 다음과 같습니다.

    codegen('myfunction','-args',{2 3},'-report')
    
  • 프로그래밍 방식의 codegen 호출을 수행하려면 함수 구문을 사용하십시오. 예를 들면 다음과 같습니다.

    A = {'myfunction','-args',{2 3}};
    codegen(A{:})
    

버전 내역

R2011a에 개발됨

모두 확장