Main Content

if, elseif, else

조건이 true인 경우 명령문 실행

구문

if expression
    statements
elseif expression
    statements
else
    statements
end

설명

예제

if expression, statements, end표현식을 실행하고 표현식이 true인 경우 명령문 그룹을 실행합니다. 표현식은 결과가 비어 있지 않고 0이 아닌 요소(논리형 또는 실수 숫자형)만 포함하는 경우에 true입니다. 그렇지 않은 경우, 표현식은 false입니다.

elseif 블록과 else 블록은 선택 사항입니다. 이 명령문은 if...end 블록 내의 이전 표현식이 false인 경우에만 실행됩니다. if 블록은 여러 개의 elseif 블록을 포함할 수 있습니다.

예제

모두 축소

1로 이루어진 행렬을 만듭니다.

nrows = 4;
ncols = 6;
A = ones(nrows,ncols);

행렬을 순환하면서 각 요소에 새 값을 할당합니다. 주대각선에는 2를, 인접한 대각선에는 -1을, 다른 나머지에는 0을 할당합니다.

for c = 1:ncols
    for r = 1:nrows
        
        if r == c
            A(r,c) = 2;
        elseif abs(r-c) == 1
            A(r,c) = -1;
        else
            A(r,c) = 0;
        end
        
    end
end
A
A = 4×6

     2    -1     0     0     0     0
    -1     2    -1     0     0     0
     0    -1     2    -1     0     0
     0     0    -1     2    -1     0

배열에 대한 관계 연산자를 포함하는 표현식(예: A > 0)은 결과의 모든 요소가 0이 아닌 경우에만 true입니다.

any 함수를 사용하여 결과 중에 true가 있는지 테스트합니다.

limit = 0.75;
A = rand(10,1)
A = 10×1

    0.8147
    0.9058
    0.1270
    0.9134
    0.6324
    0.0975
    0.2785
    0.5469
    0.9575
    0.9649

if any(A > limit)
    disp('There is at least one value above the limit.')
else
    disp('All values are below the limit.')
end
There is at least one value above the limit.

== 연산자 대신 isequal을 사용하여 배열을 비교하여 배열이 동일한지 테스트합니다. ==를 사용하면 배열의 크기가 다를 경우 오류가 발생합니다.

두 개의 배열을 만듭니다.

A = ones(2,3);
B = rand(3,4,5);

size(A)size(B)가 동일하면 배열을 결합(Concatenate)하고, 그렇지 않으면 경고를 표시하고 빈 배열을 반환합니다.

if isequal(size(A),size(B))
   C = [A; B];
else
   disp('A and B are not the same size.')
   C = [];
end
A and B are not the same size.

strcmp를 사용하여 문자형 벡터를 비교합니다. ==을 사용하여 동일성을 테스트하면 문자형 벡터의 크기가 다를 경우 오류가 발생합니다.

reply = input('Would you like to see an echo? (y/n): ','s');
if strcmp(reply,'y')
  disp(reply)
end

값이 0이 아닌지 확인합니다. ~= 연산자를 사용하여 부등식을 테스트합니다.

x = 10;
if x ~= 0
    disp('Nonzero value')
end
Nonzero value

값이 지정된 범위 내에 속하는지 확인

x = 10;
minVal = 2;
maxVal = 6;

if (x >= minVal) && (x <= maxVal)
    disp('Value within specified range.')
elseif (x > maxVal)
    disp('Value exceeds maximum value.')
else
    disp('Value is below minimum value.')
end
Value exceeds maximum value.

세부 정보

모두 축소

표현식

표현식은 관계 연산자(예: < 또는 ==)와 논리 연산자(예: &&, || 또는 ~)를 포함할 수 있습니다. 논리 연산자 andor를 사용하여 복합 표현식을 생성합니다. MATLAB®은 연산자 우선 순위 규칙에 따라 복합 표현식을 왼쪽에서 오른쪽으로 평가합니다.

if...end 블록의 조건식 내에서 논리 연산자 &|는 쇼트서킷 연산자로 동작합니다. 동작은 각각 &&||와 동일합니다. &&||는 조건식과 조건문에서 항상 쇼트서킷되므로 표현식 내에서 &| 대신 &&||를 사용하는 것이 좋습니다. 예를 들어, 다음 명령을 사용할 경우

x = 42;
if exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
end

표현식의 첫 번째 부분은 false입니다. 따라서 정의되지 않은 함수 오류가 발생할 것이므로 MATLAB은 표현식의 두 번째 부분을 실행할 필요가 없습니다.

  • 원하는 수만큼 if 문을 중첩할 수 있습니다. 각 if 문에는 end 키워드가 필요합니다.

  • elseif 키워드에서 else 다음에 공백을 추가(예: else if)하지 마십시오. 공백이 들어가면 자체 end 키워드가 필요한 if 문이 중첩되어 생성됩니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2006a 이전에 개발됨