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 (x) ¶
-
Возвращает true, если x является двумерным массивом.
Матрица — это объект с двумя измерениями (
ndims (x) == 2) для которогоsize (x)возвращает[M, N]с неотрицательными M и N.См. также: isscalar, isvector, iscell, isstruct, issparse, isa.
- : isvector (x) ¶
-
Возвращает true, если x является вектором.
Вектор — это двумерный массив, где одно из измерений равно 1 (либо 1xN, либо Nx1). Вследствие этого определения, массив 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 в диапазоне abs(x) < 2^64.Примечание по совместимости: 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/v7.2.0/Predicates-for-Numeric-Objects.html