Spec-Zone.ru › Octave 9

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

Для определения типа переменной доступны следующие функции.

: tf = isnumeric (x)

Возвращает true, если x является числовым объектом, то есть целочисленным, вещественным или комплексным массивом.

Логические и символьные массивы не считаются числовыми.

См. также: isinteger, isfloat, isreal, iscomplex, ischar, islogical, isstring, iscell, isstruct, isa.

: tf = islogical (x)
: tf = isbool (x)

Возвращает true, если x является логическим объектом.

Примечание по программированию: isbool является псевдонимом islogical и может использоваться взаимозаменяемо с ним.

См. также: ischar, isfloat, isinteger, isstring, isnumeric, isa.

: tf = isfloat (x)

Возвращает true, если x является числовым объектом с плавающей точкой.

Объекты классов double и single являются объектами с плавающей точкой.

См. также: isinteger, ischar, islogical, isnumeric, isstring, isa.

: tf = isreal (x)

Возвращает true, если x является некомплексной матрицей или скаляром.

Для совместимости с MATLAB сюда также входят логические и символьные матрицы.

См. также: iscomplex, isnumeric, isa.

: tf = iscomplex (x)

Возвращает true, если x является числовым объектом с комплексными значениями.

См. также: isreal, isnumeric, ischar, isfloat, islogical, isstring, isa.

: tf = ismatrix (x)

Возвращает true, если x является двумерным массивом.

Матрица — это массив любого типа, для которого ndims (x) == 2 и для которого size (x) возвращает [M, N] при неотрицательных значениях M и N.

См. также: isscalar, isvector, iscell, isstruct, issparse, isa.

: tf = isvector (x)

Возвращает true, если x является вектором.

Вектор — это двумерный массив любого типа, у которого один из размеров равен 1 (то есть 1xN или Nx1). Согласно этому определению объект 1x1 (скаляр) также является вектором.

См. также: isscalar, ismatrix, iscolumn, isrow, size.

: tf = isrow (x)

Возвращает true, если x является вектором-строкой.

Вектор-строка — это двумерный массив любого типа, для которого size (x) возвращает [1, N] при неотрицательном значении N.

См. также: iscolumn, isscalar, isvector, ismatrix, size.

: tf = iscolumn (x)

Возвращает true, если x является вектором-столбцом.

Вектор-столбец — это двумерный массив любого типа, для которого size (x) возвращает [N, 1] при неотрицательном значении N.

См. также: isrow, isscalar, isvector, ismatrix, size.

: tf = isscalar (x)

Возвращает true, если x является скаляром.

Скаляр — это объект любого типа, состоящий из одного элемента, для которого size (x) возвращает [1, 1].

См. также: isvector, ismatrix, size.

: tf = issquare (x)

Возвращает true, если x является двумерным квадратным массивом.

Квадратный массив — это двумерный массив любого типа, для которого size (x) возвращает [N, N], где N — неотрицательное целое число.

См. также: isscalar, isvector, ismatrix, size.

: tf = issymmetric (A)
: tf = issymmetric (A, tol)
: tf = issymmetric (A, "skew")
: tf = 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.

: tf = ishermitian (A)
: tf = ishermitian (A, tol)
: tf = ishermitian (A, "skew")
: tf = 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.

: tf = isdefinite (A)
: tf = 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.

: tf = isbanded (A, lower, upper)

Возвращает true, если A является числовой матрицей, ненулевые элементы которой находятся не дальше lower диагоналей ниже главной диагонали и upper диагоналей выше главной диагонали.

lower и upper должны быть неотрицательными целыми числами.

См. также: isdiag, istril, istriu, bandwidth.

: tf = isdiag (A)

Возвращает true, если A является диагональной числовой матрицей, то есть двумерным массивом, в котором все элементы выше и ниже главной диагонали равны нулю.

См. также: isbanded, istril, istriu, diag, bandwidth.

: tf = istril (A)

Возвращает true, если A является нижней треугольной числовой матрицей.

Нижняя треугольная матрица содержит ненулевые элементы только на главной диагонали и ниже неё.

См. также: istriu, isbanded, isdiag, tril, bandwidth.

: tf = istriu (A)

Возвращает true, если A является верхней треугольной числовой матрицей.

Верхняя треугольная матрица содержит ненулевые элементы только на главной диагонали и выше неё.

См. также: isdiag, isbanded, istril, triu, bandwidth.

: tf = 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. Преобразуйте входные значения, превышающие flintmax, в uint64.

Для больших входных значений используйте ‘sym’, если пакет Symbolic установлен и загружен:

isprime (sym ('58745389709258902525390450') + (0:4))
   ⇒  0  1  0  0  0

Примечание о совместимости: MATLAB не расширяет определение простых чисел и выдаёт ошибку при получении отрицательных или комплексных входных значений.

См. также: primes, factor, gcd, lcm.

: tf = isuniform (v)
: [tf, delta] = isuniform (v)

Возвращает true, если вещественный вектор v имеет равномерный шаг, и false в противном случае.

Вектор является равномерным, если средняя разность (delta) между всеми элементами одинакова с точностью до допуска 4 * eps (max (abs (v))).

Необязательный выходной параметр delta — это равномерная разность между элементами. Если вектор не является равномерным, delta равен NaN. Для входных данных с плавающей точкой delta имеет тот же класс, что и v; для целочисленных, логических и символьных входных данных он имеет класс double.

Примечания по программированию: Для особых случаев пустого входного значения или скалярного входного значения результат всегда равен false. Если какой-либо элемент равен NaN, результат равен false. Если delta меньше вычисленного относительного допуска, используется абсолютный допуск eps.

См. также: linspace, colon.

Если вместо свойств переменных вас интересует, какие переменные определены, а также другая информация о рабочей области, см. раздел Состояние переменных.

© 1996–2026 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/v9.4.0/Predicates-for-Numeric-Objects.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API