주요 콘텐츠

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

불필요한 지역 변수 제거 (표현식 폴딩)

표현식을 하나의 표현식으로 통합하도록 지정합니다.

모델 구성 창: 코드 생성 / 최적화

설명

불필요한 지역 변수 줄이기(표현식 폴딩) 파라미터는 모델 내 각 블록에 대해 별도의 코드 문과 저장소 선언을 생성하는 대신, 블록 연산을 단일 표현식으로 통합할지 여부를 지정합니다.

표현식 폴딩은 블록 출력에서 중간 결과의 계산과 이러한 결과가 임시 버퍼나 변수에 저장되는 것을 최소화하도록 코드를 최적화합니다. 표현식 폴딩은 생성된 코드의 효율성을 높여주며, 종종 수동으로 최적화된 코드에 버금가는 결과를 도출해 냅니다. 대부분의 경우, 모델 계산의 전체 그룹이 고도로 최적화된 단 한 줄의 코드 라인으로 통합됩니다.

사용자 정의 인라인 S-Function 블록에서 표현식 폴딩을 사용할 수 있습니다. 자세한 내용은 S-Functions That Support Expression Folding 항목을 참조하십시오.

범주: 최적화

종속성

이 파라미터는 신호 저장공간 재사용에 의해 활성화됩니다.

설정

on (디폴트 값) | off
켜짐
  • 표현식 폴딩을 활성화합니다.

  • 지역 변수를 제거하고, 해당 정보를 메인 코드 문에 통합합니다.

  • 코드의 가독성과 효율성을 높여줍니다.

꺼짐

표현식 폴딩을 비활성화합니다.

예제

모두 확장

이 예제는 표현식 폴딩을 사용하는 코드를 생성하는 방법을 보여줍니다.

다음 예제 모델을 살펴보겠습니다. 두 개의 입력은 두 개의 Gain 블록으로 연결되며, 이 블록들은 Product 블록에 입력을 제공합니다.

Model containing two Gain blocks that lead to a Product block.

표현식 폴딩이 비활성화된 상태에서, explfld.c 파일에서 코드 생성기는 다음과 같은 코드를 생성합니다.

/* Model step function */
void exprfld_step(void)
{
  /* Gain: '<Root>/Gain' incorporates:
   *  Inport: '<Root>/In1'
   */
  exprfld_B.S1 = exprfld_P.Gain_Gain * exprfld_U.i1;
 
  /* Gain: '<Root>/Gain1' incorporates:
   *  Inport: '<Root>/In2'
   */
  exprfld_B.S2 = exprfld_P.Gain1_Gain * exprfld_U.i2;
 
  /* Outport: '<Root>/Out1' incorporates:
   *  Product: '<Root>/Product'
   */
  exprfld_Y.Out1 = exprfld_B.S1 * exprfld_B.S2;
}

두 Gain 블록 모두에 대해 별도의 코드 문장이 있습니다. 최종 출력 전에, 이 코드 문들은 Gain 블록에 대한 임시 결과를 계산합니다.

모델에 대해 표현식 폴딩을 켠 다음, 코드를 다시 생성합니다. 표현식 폴딩을 사용하면, 코드 생성기는 expfld.c 파일에 표시된 것처럼 한 줄짜리 출력 연산을 생성합니다. 생성된 주석은 표현식에 나타나는 블록 파라미터를 설명합니다.

/* Model step function */
void exprfld_step(void)
{
  /* Outport: '<Root>/Out1' incorporates:
   *  Gain: '<Root>/Gain'
   *  Gain: '<Root>/Gain1'
   *  Inport: '<Root>/In1'
   *  Inport: '<Root>/In2'
   *  Product: '<Root>/Product'
   */
  exprfld_Y.Out1 = 
     exprfld_P.Gain_Gain * 
     exprfld_U.i1 * 
     (exprfld_P.Gain1_Gain * exprfld_U.i2);
}

권장 설정

응용 사례설정
디버그Off
추적성시뮬레이션이나 개발 단계에서는 영향 없음
프로덕션 코드 생성 시 비활성화
효율성On
안전 예방 조치영향 없음

프로그래밍 방식 사용

파라미터: ExpressionFolding
유형: 문자형 벡터
값: 'on' | 'off'
디폴트 값: 'on'

버전 내역

R2006a 이전에 개발됨

참고 항목

도움말 항목