Main Content

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

MATLAB Function 블록을 사용하면 MATLAB® 언어를 사용하여 Simulink® 모델에서 사용자 지정 함수를 정의할 수 있습니다. 다음 경우에 이 블록을 사용합니다.

  • 사용자 지정 기능을 모델링하는 기존 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;
    

    최종 코드는 다음과 같습니다.

    The MATLAB Function Block Editor showing the final version of the code. It includes the code from the previous steps.

  4. 블록을 종료합니다. 블록은 포트 이름을 업데이트합니다. 함수 출력 meanstdev는 블록 출력 포트 meanstdev에 대응하고, 함수 입력 vals는 블록 입력 포트 vals에 대응합니다.

    This shows the outline of the block without connections between the blocks.

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

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

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

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

MATLAB Function 블록에서 변수에 대한 속성을 검사 및 관리할 수 있습니다. 이 예제에는 입력 인수 vals가 유형과 크기 속성을 상속하는지 검사합니다.

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

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

    The Function tab in the Simulink Editor while the MATLAB Function block Editor is open. The Edit Data button on the left is enclosed in a red box.

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

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

    The Property Inspector and the Symbols pane. The vals input variable is selected, and the Property Inspector displays the variable properties.

MATLAB Function 블록에서 변수를 생성하고 속성을 설정하는 방법에 대한 자세한 내용은 항목을 참조하십시오.

모델 시뮬레이션하기

Simulink에서 실행을 클릭하여 모델을 시뮬레이션합니다. 모델은 함수의 데이터를 두 Display 블록에 출력합니다.

This shows connected signals between the blocks and the simulation results in the Display blocks.

또한 블록은 별도의 창에 데이터를 플로팅합니다.

This shows a plot of the input values and a line drawn through the values.

참고 항목

| |

관련 항목

외부 웹사이트