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 для целых, логических и символьных входных данных.

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

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

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

Предыдущее: Автоматическое преобразование типов данных, Вверх: Числовые типы данных [Содержание][Индекс]

© 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/v9.2.0/Predicates-for-Numeric-Objects.html

Spec-Zone.ru

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