주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

While 루프

이 예제는 Simulink® 블록, Stateflow® 차트 및 MATLAB® 함수 블록을 사용하여 while 루프 구조를 구현하는 방법을 보여줍니다.

C 구조

while(flag && (num_iter <= 100)
{
  flag = func ();
  num_iter ++;
}

while 루프의 모델 패턴: While Iterator Subsystem 블록

while 루프를 생성하는 한 가지 방법은 Simulink > Ports & 서브시스템 라이브러리의 While Iterator Subsystem 블록을 사용하는 것입니다.

1. 예제 모델 ex_while_loop_SL을 엽니다.

이 모델에는 시뮬레이션 시간 스텝 동안 서브시스템의 내용을 반복적으로 실행하는 While Iterator Subsystem 블록이 포함되어 있습니다.

모델에서 다음 설정을 확인하십시오:

  • Constant 블록은 While Iterator 서브시스템에 초기 조건을 제공합니다. Constant 블록의 경우, 상수 값1이며, 출력 데이터형boolean입니다. 초기 조건은 블록에 입력되는 값에 따라 달라질 수 있습니다.

  • 'While Iterator' 서브시스템에서, func 서브시스템 블록은 func( ) 내 알고리즘의 결과에 따라 0 또는 1를 출력하는 flag 출력을 가집니다. func()func 서브시스템의 함수 이름입니다.

  • 'While Iterator' 서브시스템에서 While Iterator 블록의 최대 반복 횟수100입니다.

  • While Iterator 블록의 경우, While 루프 유형while입니다.

2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.

while 루프를 구현하는 코드는 ex_while_loop_SL.c 내의 ex_while_loop_SL_step 함수에 있습니다:

/* Model step function */
void ex_while_loop_SL_step(void)
{
  int32_T s1_iter;
  boolean_T loopCond;

  /* Outputs for Iterator SubSystem: '<Root>/While Iterator Subsystem' incorporates:
   *  WhileIterator: '<S1>/While Iterator'
   */
  s1_iter = 1;

  /* SystemReset for Atomic SubSystem: '<S1>/func' */
  func_Reset();

  /* End of SystemReset for SubSystem: '<S1>/func' */
  loopCond = true;
  while (loopCond && (s1_iter <= 100)) {
    /* Outputs for Atomic SubSystem: '<S1>/func' */
    func();

    /* End of Outputs for SubSystem: '<S1>/func' */
    loopCond = flag;
    s1_iter++;
  }

  /* End of Outputs for SubSystem: '<Root>/While Iterator Subsystem' */
}

while 루프의 모델 패턴: Stateflow 차트

1. 예제 모델 ex_while_loop_SF를 엽니다.

이 모델에서 ex_while_loop_SF/Chartwhile 루프를 실행합니다.

이 차트에는 While 루프 결정 패턴이 포함되어 있으며, 차트 내부를 마우스 오른쪽 버튼으로 클릭한 후 > 차트에 패턴 추가 > 루프 > While을 선택하여 이 패턴을 추가할 수 있습니다.

2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.

while 루프를 구현하는 코드는 ex_while_loop_SF.c 내의 ex_while_loop_SF_step 함수에 있습니다:

/* Model step function */
void ex_while_loop_SF_step(void)
{
  /* Chart: '<Root>/Chart' */
  num_iter = 1;
  while (flag && (num_iter <= 100)) {
    /* Outputs for Function Call SubSystem: '<Root>/func' */
    func();

    /* End of Outputs for SubSystem: '<Root>/func' */
    num_iter++;
  }

  /* End of Chart: '<Root>/Chart' */
}

while 루프의 모델 패턴: MATLAB Function 블록

1. 예제 모델 ex_while_loop_ML을 엽니다.

MATLAB 함수 블록에는 이 함수가 포함되어 있습니다:

function fcn(func_flag)

flag = true; 
num_iter = 1;

while(flag && (num_iter<=100))
    func;
    flag = func_flag;
    num_iter = num_iter + 1;
end

2. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.

while 루프를 구현하는 코드는 ex_while_loop_ML.c 내의 ex_while_loop_ML_step 함수에 있습니다:

/* Model step function */
void ex_while_loop_ML_step(void)
{
  int32_T num_iter;
  boolean_T flag;
  boolean_T func_flag_0;

  /* MATLAB Function: '<Root>/MATLAB Function' */
  func_flag_0 = func_flag;
  flag = true;
  num_iter = 1;
  while (flag && (num_iter <= 100)) {
    /* Outputs for Function Call SubSystem: '<Root>/func' */
    func();

    /* End of Outputs for SubSystem: '<Root>/func' */
    flag = func_flag_0;
    num_iter++;
  }

  /* End of MATLAB Function: '<Root>/MATLAB Function' */
}

참고 항목

도움말 항목