Programming/MATLAB

MATLAB 코드로 C 코드 생성하기 (feat. codegen)

임아톰 2023. 4. 18. 14:12

MATLAB에는 여러가지 방법으로 MATLAB 코드를 C 코드로 생성하는 방법이 있습니다.

오늘은 codegen을 이용하여 C 코드를 생성하는 방법을 살펴보려고 합니다. 

 

MATLAB에서 codegen으로 C 코드 생성할 때는 다음 4가지 단계로 진행하면 됩니다.

 

1. C 코드를 생성할 MATLAB 함수 코드 준비

2. 함수에 들어갈 입력 형태 정의해주기

3. MATLAB 함수 코드에 %#codegen 추가

4. 터미널에 codegen 명령어 사용하여 C 코드 생성

 

예시 코드와 함께 한 단계 씩 살펴보도록 하겠습니다.

 

1. C 코드를 생성할 MATLAB 함수 코드 준비

C 코드를 생성하고 싶은 MATLAB 함수 코드를 준비하면 됩니다. 

 

예시에서는 euclidean.m 파일에 euclidean 함수를 준비하였습니다. 

해당 함수는 x로 부터의 euclidean 거리를 계산하는 함수입니다.

 

2. 함수에 들어갈 입력 형태 정의해주기

MATLAB 함수만으로는 입력 인자가 어떤 형태를 갖는지 알 수 없습니다. MATLAB에서는 동적 크기를 갖는 입력인자를 사용하지만 C 언어에서는 명확히 입력 인자의 크기를 알려줘야 합니다. 따라서 작업공간에 입력 인자의 형태를 알려줄 수 있도록 데이터를 만들어줘야 합니다.

 

euclidean 함수는 입력 인자 x와 cb를 가지고 x는 3 x 1 크기의 array이고 cb는 3 x 4 크기의 array 입니다.

x = zeros(3, 1);
cb = zeros(3, 4);

작업 공간에 아래 그림과 같이 x와 cb가 들어가 있으면 됩니다. 입력 인자의 사이즈를 알려주는 것이므로 값은 중요하지 않습니다.

 

 

3.  MATLAB 함수 코드에 %#codegen 추가

MATLAB 함수 코드에 %#codegen을 추가해주면 됩니다.

%#codegen을 추가하면 여러가지 경고 메시지가 뜰 수 있는데 메시지를 읽고 이를 해결해주면 됩니다. 

 

아래의 예시코드 같은 경우는 변수를 먼저 할당하라는 오류 메시지가 떴고 변수를 할당하여 해결하였습니다.

 

 

4.  터미널에 codegen 명령어 사용하여 C 코드 생성

이제 C 코드를 생성할 준비는 끝났습니다. 터미널에 codegen 명령어를 사용하여 C 코드를 생성하면 됩니다.

codgen은 아래와 같은 형식으로 입력하면 됩니다.

codegen -report -config:lib file_name.m -args {arg1, arg2, ...}

file_name.m에는 MATLAB 함수 코드가 있는 파일명을 적고 arg에는 인자 이름을 적어주면 됩니다.

 

예시 코드의 경우 아래와 같이 터미널에 입력하였습니다.

 

 

Code generation successful이 뜨면 코드가 잘 생성된 것입니다. View report를 누르면 생성된 C 코드를 확인할 수 있습니다. 

 

코드 생성이 완료되면 codegen을 한 경로에 codegen 폴더가 생성된 것을 확인할 수 있습니다.

 

이상으로 포스팅 마치도록 하겠습니다 :)

 

반응형