Бесконечность и 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

Можно также создать NaN s:

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

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

NaN > NaN
ans =
     0

NaN ~= NaN 
ans =
     1
Была ли эта тема полезной?