If
if-else 구문과 유사한 논리를 사용하여 서브시스템 실행 선택
라이브러리:
Simulink /
Ports & Subsystems
설명
If 블록은 Action Port 블록을 포함하는 If Action Subsystem 블록과 함께 if-else 논리를 구현하여 서브시스템 실행을 제어합니다. If 블록을 사용하는 예제는 Select Subsystem Execution 항목을 참조하십시오.

예제
Simulink 서브시스템 의미 체계
이 예제 세트는 다양한 Simulink® 서브시스템 유형과 이러한 서브시스템을 시뮬레이션할 때 사용되는 의미 체계를 보여줍니다. 각 예제는 모델과 모델 실행 방법의 세부 사항에 대한 설명을 제공합니다.
If-Then-Else 블록
이 예제에서는 사인파를 If Action Subsystem 블록에 전달했을 때 미치는 영향을 보여줍니다. 이 예제는 If Action Subsystem 블록과 Enabled Subsystem 블록 간의 유사성을 보여주기 위해 설계되었습니다.
Modeling Clutch Lock-Up Using If Blocks
Use If/Else subsystems to build a clutch model. An 'If' subsystem models the clutch dynamics in the locked position while an 'Else' subsystem models the unlocked position. One or the other is enabled using the 'If' block. The dot-dashed lines from the 'If' block denote control signals, which are used to enable If/Else (or other conditional) subsystems. Checking any of the boxes on the GUI produces a plot of any of the selected variables (versus time).
제한 사항
참고
이 섹션에 나열된 제한 사항은 R2025b 이하 버전에만 적용됩니다.
If 블록에는 다음과 같은 제한 사항이 있습니다.
조정 가능형 파라미터를 지원하지 않습니다.
if또는elseif표현식의 값은 표준 또는 액셀러레이터 모드에서 시뮬레이션 중이거나 생성된 코드를 실행하는 중에 조정될 수 없습니다.조정 가능형 if-else 표현식을 구현하려면 If 블록 외부에서 표현식을 조정하십시오. 예를 들어, Relational Operator 블록을 사용하여 If 블록 외부의 표현식을 평가하거나 조정 가능형 파라미터를 If 블록의 입력값으로 추가하면 됩니다.
사용자 지정 스토리지 클래스를 지원하지 않습니다. Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder) 항목을 참조하십시오.
if 표현식과 elseif 표현식에는
+,-,*,/와 같은 특정 연산자를 사용할 수 없습니다.
포트
입력
R2026a 이상 버전에서는 블록 내부에 사용된 논리식에 따라 입력 포트 레이블을 수정할 수 있습니다. 포트 레이블을 편집하려면 디폴트 텍스트 u1,u2,...,un에 커서를 올린 다음 텍스트를 변경합니다.

R2025b 이하 버전에서는 이 블록에서 디폴트 입력 포트 레이블 u1,u2,...,un만 사용할 수 있습니다. 입력값 u1,u2,...,un은 동일한 데이터형을 사용해야 합니다. 입력값은 열거형과 같은 사용자 정의 유형이 될 수 없습니다.
If 블록은 고정소수점 데이터형을 직접 지원하지 않습니다. 하지만, Compare To Constant 블록을 사용하여 이 제한 사항을 해결할 수 있습니다. Select Subsystem Execution 항목을 참조하십시오.
데이터형: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean
출력
if, else 및 elseif 포트의 출력은 If Action Subsystem 블록에 대한 동작 신호입니다.
파라미터
1하나의 입력 포트를 지정합니다.
- 정수
입력 포트의 개수를 지정합니다. 블록 포트는
'u'문자 뒤에 숫자1,2,...,n이 오도록 레이블이 지정되어 있으며, 여기서n은 사용자가 지정한 입력의 개수와 같습니다.
프로그래밍 방식의 사용법
블록 파라미터: NumInputs |
| 유형: 문자형 벡터 |
값: '1' | 따옴표로 묶인 정수 |
디폴트 값: '1' |
if 포트와 모든 elseif 포트 표현식이 false이면 else 포트는 동작 신호를 전송하여 연결된 If Action Subsystem 블록을 실행합니다.
- on
else 포트를 표시합니다.
- off
else 포트를 숨깁니다.
프로그래밍 방식의 사용법
블록 파라미터: ShowElse |
| 유형: 문자형 벡터 |
값: 'on' | 'off' |
디폴트 값: 'on' |
영점교차 검출을 제어합니다.
- 켜기
영점교차를 검출합니다.
- off
영점교차를 검출하지 않습니다.
프로그래밍 방식의 사용법
블록 파라미터: ZeroCross |
| 유형: 문자형 벡터 |
값: 'on' | 'off' |
디폴트 값: 'on' |
R2025a 이후
If 블록에서 생성된 코드에 if-else 문만 포함되도록 하려면 이 파라미터를 선택합니다.
- on
생성 코드에 if-else 문만 포함시킵니다. 이 옵션은 생성 코드에 switch-case 문은 포함시키지 않습니다.
- off
이 파라미터가 off이면 If 블록에서 생성된 코드에 switch-case 문을 포함시켜서 If 블록과 동일한 작업을 수행하도록 할 수 있습니다.
프로그래밍 방식의 사용법
프로그래밍 방식으로 블록 파라미터 값을 설정하려면 set_param 함수를 사용하십시오.
블록 파라미터: EnsureIfElseCode |
| 유형: 문자형 벡터 |
값: 'on' | 'off' |
디폴트 값: 'off' |
if 포트에 연결된 If Action Subsystem 블록은 연관된 if 표현식이 true로 평가될 때 실행됩니다.
u1 > 0입력값
u1이0보다 크면 출력 포트에서 동작 신호를 보내도록 지정합니다.
논리식(R2026a 이후)
다음을 사용하는 표현식을 포함해 다양한 논리식을 사용할 수 있습니다.
조정 가능형 파라미터.
일반 MATLAB® 표현식(예:
x1 > x2 + 5).사용자 지정 스토리지 클래스를 갖는 데이터 객체(예:
Simulink.Parameter및Simulink.Signal). 자세한 내용은 Create and Apply Storage Class Defined in User-Defined Package (Embedded Coder) 항목을 참조하십시오.고정소수점 데이터형.
열거형 데이터형.
MATLAB 구조체형 배열.
다음 함수를 사용하는 표현식:
산술 함수 —
ceil,floor,abs,sign.삼각 함수 —
sin,cos,tan,asin,acos,atan,atan2,sinh,cosh,tanh.지수 함수, 로그 함수, 제곱근 함수 —
log,log10,exp,sqrt.
논리식(R2025b 이하)
참고
R2025a부터는 디폴트 if 표현식(u1 > 0)을 편집하려면 표현식 테이블을 사용합니다. 여러 입력과 연산자가 포함된 복잡한 표현식의 경우, if 표현식을 선택하고 표현식 편집기 상자에서 편집하십시오.
R2025a 이전 버전에서 이 파라미터는 블록 대화 상자에서 If 표현식으로 표시됩니다. 이 파라미터를 사용하여 논리식을 지정할 수 있습니다.
그러나 모든 Simulink® 버전에서 이 표현식은 if 출력 포트에 인접한 If 블록에 표시됩니다.
이 표현식에는 연산자 <, <=, ==, ~=, >, >=, &, |, ~, () 와 unary-minus만 포함될 수 있습니다. +, -, *, / 및 ^와 같은 연산자는 허용되지 않습니다. 표현식은 데이터형 표현식(예: int8(6))을 포함해서는 안 되며 double 또는 single을 제외한 다른 데이터형의 작업 공간 변수를 참조해서는 안 됩니다.
프로그래밍 방식의 사용법
블록 파라미터: IfExpression |
| 유형: 문자형 벡터 |
값: 'u1 > 0' | 따옴표로 묶인 논리식 |
디폴트 값: 'u1 > 0' |
elseif 포트에 연결된 If Action Subsystem 블록은 연관된 elseif 표현식이 true로 평가되고 다른 모든 if 표현식과 elseif 표현식이 false이면 실행됩니다.
- 비어 있음
논리식이 지정되지 않았습니다.
논리식 목록(R2026a 이후)
다음을 사용하는 표현식을 포함하여, 이전에는 지원되지 않았던 다양한 논리식을 사용할 수 있습니다.
조정 가능형 파라미터.
일반 MATLAB 표현식(예:
x1 > x2 + 5).사용자 지정 스토리지 클래스를 갖는 데이터 객체(예:
Simulink.Parameter및Simulink.Signal). 자세한 내용은 Create and Apply Storage Class Defined in User-Defined Package (Embedded Coder) 항목을 참조하십시오.고정소수점 데이터형.
열거형 데이터형.
MATLAB 구조체형 배열.
다음 함수를 사용하는 표현식:
산술 함수 —
ceil,floor,abs,sign.삼각 함수 —
sin,cos,tan,asin,acos,atan,atan2,sinh,cosh,tanh.지수 함수, 로그 함수, 제곱근 함수 —
log,log10,exp,sqrt.
논리식(R2025b 이하)
참고
R2025a부터는 elseif 표현식을 추가하고 편집하려면 표현식 테이블을 사용합니다. 이 테이블 왼쪽에 있는 동작 버튼을 사용하여 표현식을 추가, 삭제, 이동할 수 있습니다. 이 테이블을 사용하면 쉼표로 구분된 목록 대신에 각 elseif 표현식을 개별적으로 쓸 수 있으며 모델링 요구 사항에 따라 표현식을 구성할 수 있습니다. 여러 입력과 연산자가 포함된 복잡한 표현식의 경우, 해당 elseif 표현식이 포함된 행을 선택하고 표현식 편집기 상자에서 편집하십시오.
R2025a 이전 버전에서 이 파라미터는 블록 대화 상자에서 Else 표현식으로 표시됩니다. 이러한 버전에서는 논리식을 쉼표로 구분된 목록으로 지정하십시오.
그러나 모든 Simulink 버전에서, else 조건 표시 체크박스를 선택하면 이 표현식은 If 블록에서 if 포트 아래, else 포트 위에 표시됩니다.
표현식에는 연산자 <, <=, ==, ~=, >, >=, &, |, ~, ()와 unary-minus만 포함될 수 있습니다. +, -, *, / 및 ^와 같은 연산자는 허용되지 않습니다. 표현식은 데이터형 표현식(예: int8(6))을 포함해서는 안 되며 double 또는 single을 제외한 다른 데이터형의 작업 공간 변수를 참조해서는 안 됩니다.
프로그래밍 방식의 사용법
블록 파라미터: ElseIfExpressions |
| 유형: 문자형 벡터 |
값: '' | 따옴표로 묶이고 쉼표로 구분된 논리식 목록 |
디폴트 값: '' |
블록 특성
데이터형 |
|
직접 피드스루 |
|
다차원 신호 |
|
가변 크기 신호 |
|
영점교차 검출 |
|
세부 정보
If Action Subsystem 블록을 실행시키는 If 블록은 조건 커버리지, 결정 커버리지, MCDC 커버리지를 받으며, 다음과 같이 적용됩니다.
if조건과 각elseif조건(존재하는 경우)은 결정 커버리지를 받습니다.u1 && u2와 같이 여러 조건을 가진 논리식이 포함된if또는elseif조건은 표현식의 각 조건에 대해 MCDC 커버리지와 조건 커버리지를 받습니다.else조건은 직접적으로 커버리지를 받지 않습니다.if조건 또는 마지막elseif조건(존재하는 경우)이 false이면else조건은 true가 되며, 그 반대의 경우도 마찬가지입니다. 따라서 If 블록의 나머지 부분에서 전체 커버리지가 충족되면else조건에서도 전체 커버리지가 충족됨을 의미합니다.
Simulink Coverage™는 각 if 조건과 elseif 조건이 true로 평가된 총 시간 스텝 개수와 false로 평가된 총 시간 스텝 개수를 보고합니다. if 조건 또는 elseif 조건이 한 번 이상 true로 평가되고 한 번 이상 false로 평가되는 경우 결정 커버리지는 100%입니다. if 조건 또는 elseif 조건이 한 번도 true로 평가되지 않거나 if 조건 또는 elseif 조건이 한 번도 false로 평가되지 않은 경우 결정 커버리지는 50%입니다. 이전 if 조건 또는 elseif 조건이 어떤 시간 스텝에서도 false로 평가되지 않은 경우 elseif 조건의 결정 커버리지는 0%일 수 있습니다.
If 블록은 입력 신호를 비교하므로 Relational Boundary 커버리지 메트릭을 선택하면 If 블록은 관계형 경계 커버리지를 수신합니다. 자세한 내용은 Relational Boundary Coverage (Simulink Coverage) 항목을 참조하십시오.
커버리지 리포트는 Simulink Coverage에 의해 평가되는 표현식을 표시하고, 해당 표현식이 true로 평가된 시간 스텝 개수와 false로 평가된 시간 스텝 개수를 보고합니다. 예를 들면, If 블록이 입력이 0이 아닌지 여부를 평가하는 경우 커버리지 리포트에는 if(u1 ~= 0)이 결정으로 표시됩니다.

확장 기능
C/C++ 코드 생성
Simulink® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
HDL Coder™는 HDL 구현과 합성된 논리에 영향을 주는 추가 구성 옵션을 제공합니다.
이 블록에는 하나의 디폴트 HDL 아키텍처가 있습니다.
| ConstrainedOutputPipeline | 기존 지연을 설계 내부로 이동하여 출력에 배치하는 레지스터 개수입니다. 분산된 파이프라이닝은 이러한 레지스터를 다시 분산하지 않습니다. 디폴트 값은 |
| InputPipeline | 생성된 코드에 삽입할 입력 파이프라인 단계의 개수입니다. 분산 파이프라이닝과 제약이 있는 출력 파이프라이닝은 이러한 레지스터를 이동할 수 있습니다. 디폴트 값은 |
| OutputPipeline | 생성된 코드에 삽입할 출력 파이프라인 단계의 개수입니다. 분산 파이프라이닝과 제약이 있는 출력 파이프라이닝은 이러한 레지스터를 이동할 수 있습니다. 디폴트 값은 |
| SynthesisAttributes | 모델 내 블록 및 블록 출력 신호에 대한 합성 특성을 지정합니다. 생성된 HDL 코드에는 이러한 특성이 포함됩니다. 자세한 내용은 SynthesisAttributes (HDL Coder) 항목을 참조하십시오. |
버전 내역
R2006a 이전에 개발됨SynthesisAttributes HDL 블록 속성을 사용하여 블록과 해당 블록의 출력 신호에 대한 합성 특성을 지정합니다. HDL Coder는 생성된 HDL 코드에 이러한 특성을 포함합니다.
R2026a부터 이 블록을 사용하면 다음을 수행할 수 있습니다.
If 블록의 입력 포트 레이블을 모델링 요구 사항에 맞게 조정할 수 있습니다. 이전에는 입력 포트 레이블에
u1,u2등과 같은 디폴트 이름만 사용할 수 있었습니다.if 조건과 elseif 조건에 대해 이전에는 지원되지 않았던 다양한 논리식을 사용할 수 있습니다. 표현식 목록에 대한 자세한 내용은 if 파라미터를 참조하십시오.
업데이트된 블록 대화 상자를 사용하여 테이블에서 논리식을 지정할 수 있습니다. elseif 표현식을 더 이상 쉼표로 구분된 목록으로 지정할 필요가 없습니다. 이러한 변경으로 인해 전체적인 논리 흐름을 더 쉽게 시각화하고 구문 분석할 수 있게 되었습니다. 또한 테이블에 if-else 표현식을 추가, 삭제, 위아래로 이동할 수 있는 새로운 동작 버튼이 생겼습니다. 이러한 버튼을 사용하여 모델링 요구 사항에 따라 표현식을 구성할 수 있습니다. 또한 새로운 표현식 편집기 상자를 사용하면 복잡한 표현식을 편집할 수 있습니다.
생성 코드에 if-else 표현식이 포함됩니다. 이러한 변경은 switch-case 문이 포함되지 않도록 하고 생성 코드의 가독성을 향상시킵니다.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)


