Main Content

무한대(inf)와 NaN

무한대

MATLAB®은 특수값 Inf로 무한대를 나타냅니다. 무한대는 0으로 나누기(Division By Zero)나 오버플로와 같은 연산에서 초래되며, 이와 같은 연산은 기존의 부동소수점 값으로 나타내기에는 너무 큰 값을 발생시킵니다. MATLAB은 양수 무한대에 대한 IEEE® 산술 표현을 double형 스칼라 값으로 반환하는 Inf라는 함수도 제공합니다.

아래는 MATLAB에서 양수 무한대나 음수 무한대를 반환하는 몇 가지 명령문 예입니다.

x = 1/0
x =
Inf

x = 1.e1000
x =
Inf

x = exp(1000)
x =
Inf

x = log(0)
x =
-Inf

isinf 함수를 사용하여 x가 양수 무한대 또는 음수 무한대인지 확인할 수 있습니다.

x = log(0);

isinf(x)
ans =
     1

NaN

MATLAB은 NaN이라는 특수값을 사용하여 실수나 복소수가 아닌 값을 나타냅니다. NaN은 "Not a Number(숫자가 아님)"의 약어입니다. NaN을 포함하는 산술 연산을 수행하는 경우와 마찬가지로, 0/0inf/inf와 같은 표현식은 NaN을 반환합니다.

x = 0/0
x =

   NaN

다음을 사용하여 NaN을 생성할 수도 있습니다.

x = NaN;

whos x
  Name      Size                   Bytes  Class

  x         1x1                        8  double

NaN 함수는 NaN의 IEEE 산술 표현 중 하나를 double형 스칼라 값으로 반환합니다. 이 NaN 값의 정확한 비트별 16진수 표현은 다음과 같습니다.

format hex
x = NaN

x =

   fff8000000000000

항상 isnan 함수를 사용하여 배열의 요소가 NaN인지 확인하십시오.

isnan(x)
ans =

     1

MATLAB은 다른 표현 방식의 NaN도 "숫자가 아님" 상태를 유지하고 NaN의 다른 모든 표현을 동일하게 처리합니다. 그러나 일부 특수한 경우(하드웨어 한계가 원인일 수 있음), MATLAB은 전체 계산에서 또 다른 NaN 표현들의 정확한 비트 패턴을 유지하지 않고, 위에 정의된 정규 NaN 비트 패턴을 대신 사용합니다.

NaN의 논리 연산

두 개의 NaN이 서로 일치하지 않으므로 NaN을 포함하는 논리 연산은 항상 false를 반환합니다. 단, 부등식으로 테스트하는 경우는 예외입니다(NaN ~= NaN).

NaN > NaN
ans =
     0

NaN ~= NaN 
ans =
     1