4.8 Предикаты для числовых объектов
Поскольку тип переменной может изменяться во время выполнения программы, может потребоваться проверка типа во время выполнения. Это также позволяет изменить поведение функции в зависимости от типа входных данных. Например, эта примитивная реализация abs возвращает абсолютное значение входных данных, если это вещественное число, и длину входных данных, если это комплексное число.
function a = abs (x)
if (isreal (x))
a = sign (x) .* x;
elseif (iscomplex (x))
a = sqrt (real(x).^2 + imag(x).^2);
endif
endfunction Ниже приведены функции для определения типа переменной.
- isnumeric (x)
-
Возвращает true, если x — числовой объект, т.е. массив целых, вещественных или комплексных чисел.
Логические и символьные массивы не считаются числовыми.
См. также: isinteger, isfloat, isreal, iscomplex, ischar, islogical, isstring, iscell, isstruct, isa.
- islogical (x)
- isbool (x)
-
Возвращает true, если x — логический объект.
См. также: ischar, isfloat, isinteger, isstring, isnumeric, isa.
- isfloat (x)
-
Возвращает true, если x — числовой объект с плавающей запятой.
Объекты класса double или single — это объекты с плавающей запятой.
См. также: isinteger, ischar, islogical, isnumeric, isstring, isa.
- isreal (x)
-
Возвращает true, если x — не комплексная матрица или скаляр.
Для совместимости с MATLAB это включает логические и символьные матрицы.
- iscomplex (x)
-
Возвращает true, если x — числовой объект со значениями комплексных чисел.
См. также: isreal, isnumeric, ischar, isfloat, islogical, isstring, isa.
- ismatrix (a)
-
Возвращает true, если a — двумерный массив, т.е.
size (a)возвращает[M N]с неотрицательными M и N.См. также: isscalar, isvector, iscell, isstruct, issparse, isa.
- isvector (x)
-
Возвращает true, если x — вектор.
Вектор — это двумерный массив, где одна из размерностей равна 1. Вследствие этого 1x1 массив, или скаляр, также является вектором.
- isrow (x)
-
Возвращает true, если x — строчный вектор, т.е.
size (x)возвращает[1 N]с неотрицательным N.
- iscolumn (x)
-
Возвращает true, если x — столбцовый вектор, т.е.
size (x)возвращает[N 1]с неотрицательным N.
- isscalar (x)
-
Возвращает true, если x — скаляр, т.е.
size (x)возвращает[1 1].
- issquare (x)
-
Возвращает true, если x — квадратная матрица, т.е.
size (x)возвращает[N N]с неотрицательным N.
- issymmetric (A)
- issymmetric (A, tol)
- issymmetric (A, "skew")
- issymmetric (A, "skew", tol)
-
Возвращает true, если A — симметричная или кососимметричная матрица в пределах заданной погрешности tol.
По умолчанию погрешность равна нулю (используется более быстрый код).
Тип симметрии можно указать с помощью дополнительного ввода
"nonskew"(по умолчанию) для обычной симметрии или"skew"для кососимметрии.Описание: матрица симметрична, если её транспонированная матрица равна исходной матрице:
A == A.'. Если задана погрешность, симметрия определяется поnorm (A - A.', Inf) / norm (A, Inf) < tol.Матрица кососимметрична, если её транспонированная матрица равна отрицательной исходной матрице:
A == -A.'. Если задана погрешность, кососимметрия определяется поnorm (A + A.', Inf) / norm (A, Inf) < tol.См. также: ishermitian, isdefinite.
- ishermitian (A)
- ishermitian (A, tol)
- ishermitian (A, "skew")
- ishermitian (A, "skew", tol)
-
Возвращает true, если A — эрмитова или косоэрмитова матрица в пределах заданной погрешности tol.
По умолчанию погрешность равна нулю (используется более быстрый код).
Тип симметрии можно указать с помощью дополнительного ввода
"nonskew"(по умолчанию) для обычной эрмитовости или"skew"для косоэрмитовости.Описание: матрица эрмитова, если её комплексно-сопряжённая транспонированная матрица равна исходной матрице:
A == A'. Если задана погрешность, вычисление выполняется поnorm (A - A', Inf) / norm (A, Inf) < tol.Матрица косоэрмитова, если её комплексно-сопряжённая транспонированная матрица равна отрицательной исходной матрице:
A == -A'. Если задана погрешность, вычисление выполняется поnorm (A + A', Inf) / norm (A, Inf) < tol.См. также: issymmetric, isdefinite.
- isdefinite (A)
- isdefinite (A, tol)
-
Возвращает true, если A — симметричная положительно определённая матрица в пределах заданной погрешности tol.
Если tol опущена, используется погрешность
100 * eps * norm (A, "fro").Описание: положительно определённая матрица имеет собственные значения, все из которых больше нуля. Положительно полуопределённая матрица имеет собственные значения, все из которых больше или равны нулю. Вероятность того, что матрица A является положительно полуопределённой, очень высока, если выполняются следующие два условия при подходящей малой погрешности tol.
isdefinite (A) ⇒ 0 isdefinite (A + 5*tol, tol) ⇒ 1
См. также: issymmetric, ishermitian.
- isbanded (A, lower, upper)
-
Возвращает true, если A — матрица с элементами, ограниченными lower диагоналями ниже главной диагонали и upper диагоналями выше главной диагонали.
lower и upper должны быть неотрицательными целыми числами.
- isdiag (A)
-
Возвращает true, если A — диагональная матрица.
- istril (A)
-
Возвращает true, если A — нижняя треугольная матрица.
Нижняя треугольная матрица имеет ненулевые элементы только на главной диагонали и ниже.
- istriu (A)
-
Возвращает true, если A — верхняя треугольная матрица.
Верхняя треугольная матрица имеет ненулевые элементы только на главной диагонали и выше.
- isprime (x)
-
Возвращает логический массив, в котором значение true соответствует элементам x, являющимся простыми числами, и false — в противном случае.
Простое число традиционно определяется как целое положительное число, большее 1 (например, 2, 3, …), которое делится только на себя и на 1. Octave расширяет это определение, включив в него как отрицательные целые числа, так и комплексные значения. Отрицательное целое число является простым, если его положительный аналог является простым. Это эквивалентно
isprime (abs (x)).Если
class (x)является комплексным, то простота проверяется в области целых гауссовых чисел (https://en.wikipedia.org/wiki/Gaussian_integer). Некоторые целые числа, не являющиеся комплексными, являются простыми в обычном смысле, но не в области целых гауссовых чисел. Например, 5 = (1+2i)*(1-2i) показывает, что 5 не является простым, потому что оно имеет делитель, отличный от себя и 1. Следует проявлять осторожность при одновременной проверке комплексных и вещественных значений в одной матрице.Примеры:
isprime (1:6) ⇒ 0 1 1 0 1 0
isprime ([i, 2, 3, 5]) ⇒ 0 0 1 0
Примечание по программированию:
isprimeуместно, если максимальное значение в x не слишком велико (< 1e15). Для больших значений следует использовать специализированный код для факторизации.Примечание по совместимости: matlab не расширяет определение простых чисел и выведет ошибку, если на вход поданы отрицательные или комплексные значения.
Если вместо свойств переменных вам нужно узнать, какие переменные определены и получить другую информацию о рабочем пространстве, см. Статус переменных.
© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Predicates-for-Numeric-Objects.html