Spec-Zone.ru › Octave 8

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 является логическим объектом.

См. также: 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.

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

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

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

© 1996–2023 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/v8.1.0/Predicates-for-Numeric-Objects.html

Spec-Zone.ru

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