Бесконечность и NaN

Бесконечность

MATLAB® представляет бесконечность по специальному значению Inf. Бесконечность является результатом таких операций, как деление на нуль и переполнение, которые приводят к результатам, слишком большим, чтобы представлять как обычные значения с плавающей точкой. MATLAB также предоставляет функцию, вызываемую Inf который возвращает IEEE® арифметическое представление положительной бесконечности как double скалярное значение.

Несколько примеров операторов, которые возвращают положительную или отрицательную бесконечность в 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, что обозначает «Не число». Выражения типа 0/0 и inf/inf результат в NaN, как и любые арифметические операции с NaN:

x = 0/0
x =

   NaN

Можно также создать NaNs по:

x = NaN;

whos x
  Name      Size                   Bytes  Class

  x         1x1                        8  double

NaN функция возвращает одно из арифметических представлений IEEE для NaN как double скалярное значение. Точное битовое шестнадцатеричное представление этого NaN значение есть,

format hex
x = NaN

x =

   fff8000000000000

Всегда используйте isnan функция для проверки того, что элементы массива NaN:

isnan(x)
ans =

     1

MATLAB сохраняет статус «Not a Number» альтернативных NaN представляет и обрабатывает все различные представления NaN эквивалентно. Однако в некоторых особых случаях (возможно, из-за аппаратных ограничений) MATLAB не сохраняет точный битовый шаблон альтернативных NaN представления на протяжении всего вычисления и вместо этого используют канонические NaN битовый шаблон, заданный выше.

Логические операции на NaN

Потому что два NaNs не равны друг другу, логические операции с NaN всегда возвращает false, кроме теста на неравенство, (NaN ~= NaN):

NaN > NaN
ans =
     0

NaN ~= NaN 
ans =
     1