MATLAB® представляет бесконечность специальным значением inf
. Бесконечность следует из операций как деление на нуль и переполнение, которые приводят к результатам, слишком большим представлять как обычные значения с плавающей точкой. MATLAB также обеспечивает функцию под названием inf
, который возвращает представление арифметики IEEE® для положительной бесконечности как скалярное значение double
.
Несколько примеров операторов, которые возвращают положительную или отрицательную бесконечность в MATLAB, показывают здесь.
|
|
|
|
Используйте функцию isinf
, чтобы проверить, что x
является положительной или отрицательной бесконечностью:
x = log(0); isinf(x) ans = 1
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
s не равен друг другу, логические операции, включающие NaN
всегда, возвращают false, за исключением теста для неравенства, (NaN ~= NaN
):
NaN > NaN ans = 0 NaN ~= NaN ans = 1