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

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

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

Несколько примеров операторов, которые возвращают положительную или отрицательную бесконечность в MATLAB, показывают здесь.

x = 1/0
x =
Inf

x = 1.e1000
x =
   Inf

x = exp (1000)
x =
   Inf

x = регистрируйте (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