Main Content

MATLAB 함수를 Simulink에서 MATLAB Function 블록으로 구현하기

MATLAB Function 블록을 사용하면 MATLAB® 언어를 사용하여 Simulink® 모델에서 사용자 지정 함수를 정의할 수 있습니다. MATLAB Function 블록은 Simulink Coder™ 및 Embedded Coder®에서 C/C++ 코드 생성을 지원합니다.

다음 경우에 이 블록을 사용합니다.

  • 사용자 지정 기능을 모델링하는 기존 MATLAB 함수가 있거나 이러한 함수를 쉽게 만들 수 있습니다.

  • 모델에 Simulink 그래픽 언어로 표현되지 않거나 표현할 수 없는 사용자 지정 기능이 필요합니다.

  • Simulink 블록 다이어그램을 사용하는 것보다 MATLAB 함수를 사용하여 사용자 지정 기능을 모델링하는 것이 더 쉽게 느껴집니다.

  • 모델링하려는 사용자 지정 기능에 연속 동적 상태 또는 이산 동적 상태가 포함되어 있지 않습니다. 동적 상태를 모델링하려면 S-Function을 사용하십시오. MATLAB S-Function을 만들고 구성하기 항목을 참조하십시오.

MATLAB Function 블록으로 평균과 표준편차 계산하기

이 예제에서는 MATLAB Function 블록을 포함하는 모델로 시작하여 블록의 사용자 지정 방법, 값 벡터에 대한 평균 및 표준편차 계산 방법 등을 안내합니다.

모델 열기

모델 call_stats_block1에는 빈 MATLAB Function 블록과 이 예제에 필요한 블록이 들어 있습니다. 모델을 엽니다.

MATLAB Function 블록 프로그래밍하기

값으로 구성된 벡터의 평균과 표준편차를 계산하도록 블록을 프로그래밍합니다.

  1. MATLAB Function 블록을 더블 클릭하여 MATLAB Function 블록 편집기를 엽니다. MATLAB Function 블록 편집기에 두 개의 변수, 즉 하나의 입력 및 출력 인수가 있는 디폴트 함수가 표시됩니다.

    this image shows the MATLAB Function Block Editor after it has been opened from the call_stats_block1 model. It includes a default function.

  2. 다음과 같이 함수 선언문을 편집하여 함수 입력과 출력을 정의합니다.

    function [mean, stdev] = stats(vals)
    

    이 선언문은 stats라는 함수를 3개의 변수로 정의합니다. 선언문은 입력 인수 vals 및 두 개의 출력 인수 meanstdev를 정의합니다.

  3. 함수 선언문 이후 하나의 새 줄에 다음 코드를 추가합니다.

    % Calculates a statistical mean and a standard
    % deviation for the values in vals.
    
    len = length(vals);
    mean = avg(vals,len);
    stdev = sqrt(sum(((vals-avg(vals,len)).^2))/len);
    plot(vals,"-+");
    
    function mean = avg(array,size)
    mean = sum(array)/size;
    
  4. 블록을 종료합니다. 블록은 포트 이름을 업데이트합니다. 함수 출력 meanstdev는 블록 출력 포트 meanstdev에 대응하고, 함수 입력 vals는 블록 입력 포트 vals에 대응합니다.

  5. 다음과 같이 MATLAB Function 블록에 대한 연결을 완료합니다.

    This shows connected signals between the blocks established in the previous image.

  6. 모델을 call_stats_block2로 저장합니다.

MATLAB Function 블록 변수에 대한 속성 검사하기

MATLAB Function 블록에서 변수에 대한 속성을 검사 및 관리할 수 있습니다. Create and Define MATLAB Function Block Variables 항목을 참조하십시오. 이 예제에는 입력 인수 vals가 유형과 크기 속성을 상속하는지 검사합니다.

  1. MATLAB Function 블록을 더블 클릭합니다.

  2. 기호 창과 속성 인스펙터를 엽니다. 함수 탭에서 데이터 편집을 클릭합니다.

    기호 창은 이름 열에 변수 이름을 표시합니다. 유형 열은 함수 인수 포트 할당과 함수 선언문에서 표시될 위치를 결정합니다. 이 예제에서 vals는 입력 포트에 할당됩니다. meanstdev는 출력 포트에 할당됩니다. 어느 한 변수에 대해 유형 항목을 변경하면 함수 선언문도 변경됩니다.

  3. vals에 대한 속성을 검사합니다. 기호 창에서 vals의 행을 클릭합니다. 속성 인스펙터가 업데이트되어 vals에 대한 속성을 표시합니다. 범위 속성은 유형 열과 일치합니다.

    다음과 같은 일부 속성만 상속될 수 있습니다. 크기, 단위, 실수/복소수 여부유형. 변수가 크기-1, 단위inherit, 실수/복소수 여부상속됨, 유형상속: Simulink와 동일로 설정되어 있으면, 이러한 속성을 상속함을 의미합니다. 이 예제에서 vals크기유형에 이러한 값을 사용합니다.

기호 창에서 나머지 MATLAB Function 블록 변수를 선택하여 검사하십시오.

기본적으로, 새로 정의된 입력 및 출력 변수는 그 크기, 단위, 실수/복소수 여부 및 유형을 상속합니다. 변수가 특정 크기, 단위 또는 유형을 사용하도록 이러한 속성을 명시적으로 지정할 수 있습니다. 예를 들어, 변수를 2-by-3 행렬로 지정하려면 크기 속성에 [2 3]을 입력합니다. 자세한 내용은 Define and Modify Variable Data TypesSpecify Size of MATLAB Function Block Variables 항목을 참조하십시오.

함수 빌드하기

MATLAB Function 블록에서 코드를 입력한 뒤 오류 코드를 검사하고 함수를 빌드할 수 있습니다. Debug MATLAB Function Blocks 항목을 참조하십시오.

모델을 구축할 때 MATLAB은 컴파일러를 사용하여 MATLAB function 블록 코드를 컴파일합니다. MATLAB에서 지원되는 컴파일러가 시스템에 여러 개 설치된 경우 mex -setup 명령을 사용하여 디폴트 컴파일러를 변경할 수 있습니다. 디폴트 컴파일러 변경하기 항목을 참조하십시오. 지원되는 컴파일러 목록을 보려면 지원 및 호환되는 컴파일러를 열고 운영 체제에 해당하는 탭을 클릭한 다음 Simulink Product Family 표에서 For Model Referencing, Accelerator mode, Rapid Accelerator mode, and MATLAB Function blocks 열로 이동합니다.

Simulink에서 실행을 클릭하여 모델을 시뮬레이션합니다. 소프트웨어는 모델을 구축할 때 MATLAB Function 블록을 빌드하며, 두 개의 Display 블록에 대한 함수에서 데이터를 출력합니다.

코드 생성을 위해 블록 준비하기

MATLAB Function 블록이 포함된 모델에서 독립 실행형 C/C++ 코드를 생성하려면 Simulink Coder 또는 Embedded Coder를 사용합니다.

시뮬레이션 및 코드 생성 빌드에 지원되는 컴파일러 선택하기

지원되는 컴파일러 목록을 보려면 지원 및 호환되는 컴파일러를 열고 운영 체제에 해당하는 탭을 클릭한 다음 Simulink 제품군 테이블에서 Simulink Coder 열로 이동합니다.

MATLAB Function 블록에 대한 코드 생성하기

Simulink Coder 또는 Embedded Coder에 대한 라이선스가 있는 경우 모델로부터 코드를 생성할 수 있습니다. 코드를 생성하려면 다음을 수행하십시오.

  1. call_stats_block2 모델에서 MATLAB Function 블록을 더블 클릭합니다.

  2. Simulink Coder 또는 Embedded Coder 앱을 엽니다.

  3. C Code 탭에서 빌드를 클릭하여 예제 모델을 컴파일하고 빌드합니다.

    가변 스텝 솔버와 관련된 오류가 발생하는 경우 구성 파라미터 창을 연 다음 왼쪽 창에 있는 솔버를 클릭합니다. 솔버 선택에서 유형고정 스텝으로 설정하고 코드를 다시 생성합니다. 고정 스텝 솔버와 가변 스텝 솔버의 차이점에 대한 자세한 내용은 Fixed-Step Versus Variable-Step Solvers 항목을 참조하십시오.

참고 항목

| |

관련 항목