Main Content

MATLAB 코드를 Stateflow 플로우 차트로 변환하기

MATLAB® 코드를 Stateflow® 플로우 차트와 그래픽 함수로 변환하려면 패턴 마법사를 사용합니다. 변환에 지원되는 패턴은 다음과 같습니다.

  • if, if-else, 기타 중첩된 의사 결정 명령문

  • forwhile 루프

  • switch 명령문

패턴 마법사는 MATLAB 함수와 스크립트를 변환할 수 있습니다.

  • MATLAB 함수는 Stateflow 그래픽 함수로 변환됩니다.

  • MATLAB 스크립트는 Stateflow 플로우 차트로 변환됩니다.

MATLAB 코드 변환은 독립 실행형 Stateflow 차트에서만 지원됩니다. 자세한 내용은 Create Stateflow Charts for Execution as MATLAB Objects 항목을 참조하십시오.

MATLAB 스크립트에서 플로우 차트 만들기

이 MATLAB 스크립트는 콜라츠 추측의 한 사례를 경험적으로 검증합니다. 숫자형 입력값 u가 주어지면 스크립트는 다음 규칙을 반복하여 헤일스톤 수열 n0 = u, n1, n2, n3, ⋯을 계산합니다.

  • ni가 짝수이면 ni+1 = ni/2입니다.

  • ni가 홀수이면 ni+1 = 3ni + 1입니다.

콜라츠 추측에 따르면 모든 양의 정수가 최종적으로 1이 되는 헤일스톤 수열을 갖습니다.

% Hailstone sequence u, c(u), c(c(u)),...
y = u;
while y(end) ~= 1
    y(end+1) = c(y(end));
end
disp(y);

function n = c(n)
% Compute next number in hailstone sequence.
% If n is even, then c(n) = n/2.
% If n is odd, then c(n) = 3*n+1.
    if rem(n,2) == 0
        n = n/2;
    else
        n = 3*n+1;
    end
end
이 스크립트는 출력값이 1이 될 때까지 보조 함수 c를 반복적으로 호출하는 while 루프를 실행합니다. 함수 c는 입력의 패리티에 따라 출력이 달라지는 조건부 if-else 명령문으로 구성됩니다.

이 스크립트를 플로우 차트와 그래픽 함수로 변환하려면 다음을 수행합니다.

  1. 새 독립 실행형 차트를 엽니다.

    edit hailstone.sfx
  2. 상태 차트 탭에서 패턴 > 파일 선택을 선택합니다.

  3. 대화 상자에서 MATLAB 스크립트를 선택하고 열기를 클릭합니다. 패턴 마법사는 Stateflow 차트에 플로우 차트와 그래픽 함수를 추가합니다. 그래픽 함수를 두 번 클릭하면 내용을 볼 수 있습니다.

    Flow chart that automatically generated from a MATLAB script.

  4. 기호 창에서 정의되지 않은 기호 연결 맺기 를 클릭합니다. Stateflow 편집기는 uy를 로컬 데이터로 확인합니다.

  5. 차트를 저장합니다.

  6. Stateflow 편집기에서 차트를 실행하려면 기호 창에서 u = 9의 값을 입력하고 실행 을 클릭합니다. 플로우 차트가 실행되는 동안, Stateflow 편집기는 차트 애니메이션을 통해 활성 천이를 강조 표시합니다. 실행이 중지되면 MATLAB 명령 창에 값 9부터 시작하는 헤일스톤 수열이 표시됩니다.

         9    28    14     7    22    11    34    17    52    26    13    40    20    10     5    16     8     4     2     1
    
  7. 중지 를 클릭합니다.

생성된 플로우 차트와 그래픽 함수를 복사하여 Simulink® 모델의 Stateflow 차트를 포함한 다른 차트에 붙여넣을 수 있습니다. MATLAB 코드가 Simulink에서 코드 생성용으로 한정된 기능을 사용하는 경우 차트를 시뮬레이션하기 전에 플로우 차트 동작을 수정해야 합니다. 자세한 내용은 Call Extrinsic MATLAB Functions in Stateflow Charts 항목을 참조하십시오.

참고

차트의 그래픽 함수로 변환할 MATLAB 함수에 nargin이 사용되고 있다고 가정하겠습니다. nargin은 chart 객체를 그래픽 함수의 입력 인수 중 하나로 간주하기 때문에 그래픽 함수의 nargin 값은 원래 MATLAB 함수의 nargin 값에 1을 더한 값과 같습니다. 자세한 내용은 Execute a Standalone Chart 항목을 참조하십시오.

관련 항목