무한대(inf)와 NaN
무한대
MATLAB®은 특수값 Inf
로 무한대를 나타냅니다. 무한대는 0으로 나누기(Division By Zero)나 오버플로와 같은 연산에서 초래되며, 이와 같은 연산은 기존의 부동소수점 값으로 나타내기에는 너무 큰 값을 발생시킵니다. MATLAB은 양수 무한대에 대한 IEEE® 산술 표현을 double
형 스칼라 값으로 반환하는 Inf
라는 함수도 제공합니다.
아래는 MATLAB에서 양수 무한대나 음수 무한대를 반환하는 몇 가지 명령문 예입니다.
|
|
|
|
isinf
함수를 사용하여 x
가 양수 무한대 또는 음수 무한대인지 확인할 수 있습니다.
x = log(0); isinf(x) ans = 1
NaN
MATLAB은 NaN
이라는 특수값을 사용하여 실수나 복소수가 아닌 값을 나타냅니다. NaN은 "Not a Number(숫자가 아님)"의 약어입니다. NaN
을 포함하는 산술 연산을 수행하는 경우와 마찬가지로, 0/0
및 inf/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