3.3 Размеры объектов
Следующие функции позволяют определить размер переменной или выражения. Эти функции определены для всех объектов. Они возвращают -1, когда операция не имеет смысла. Например, тип структуры данных Octave не имеет строк или столбцов, поэтому функции rows и columns возвращают -1 для аргументов структуры.
- : ndims (a) ¶
-
Возвращает число измерений объекта a.
Для любого массива результат всегда будет больше или равен 2. Конечные одиночные измерения не учитываются, т.е. конечные измерения d больше 2, для которых
size (a, d) = 1.ndims (ones (4, 1, 2, 1)) ⇒ 3См. также: size.
- : columns (a) ¶
-
Возвращает число столбцов объекта a. Это эквивалентно
size (a, 2).См. также: rows, size, length, numel, isscalar, isvector, ismatrix.
- : rows (a) ¶
-
Возвращает число строк объекта a. Это эквивалентно
size (a, 1).См. также: columns, size, length, numel, isscalar, isvector, ismatrix.
- : numel (a) ¶
- : numel (a, idx1, idx2, …) ¶
-
Возвращает число элементов в объекте a.
При необходимости, если указаны индексы idx1, idx2, …, возвращает число элементов, которые получились бы в результате индексации
a(idx1, idx2, …)
Обратите внимание, что индексы не обязательно должны быть скалярными числами. Например,
a = 1; b = ones (2, 3); numel (a, b)
вернет 6, так как это число способов индексации с помощью b. Или индекс может быть строкой
":", которая представляет оператор двоеточия. Например,a = ones (5, 3); numel (a, 2, ":")
вернет 3, так как вторая строка содержит три столбца.
Этот метод также вызывается, когда объект появляется как lvalue с индексацией cs-списка, т.е.
object{…}илиobject(…).field.
- : length (a) ¶
-
Возвращает длину объекта a.
Длина равна 0 для пустых объектов, 1 для скаляров и числу элементов для векторов. Для матриц или N-мерных объектов длина равна числу элементов по наибольшему измерению (эквивалентно
max (size (a))).
- : sz = size (a) ¶
- : dim_sz = size (a, dim) ¶
- : dim_sz = size (a, d1, d2, …) ¶
- : [rows, cols, …, dim_N_sz] = size (…) ¶
-
Возвращает строку-вектор с размером (числом элементов) каждого измерения для объекта a.
При задании второго аргумента, dim, возвращает размер соответствующего измерения. Если dim - вектор, возвращает каждый соответствующий размер. Также можно указать несколько измерений как отдельные аргументы.
При единственном выходном аргументе,
sizeвозвращает строку-вектор. При вызове с несколькими выходными аргументами,sizeвозвращает размер измерения N в N-ом аргументе. Количество строк, измерение 1, возвращается в первом аргументе, количество столбцов, измерение 2, возвращается во втором аргументе и т.д. Если в объекте a больше измерений, чем выходных аргументов,sizeвозвращает общее число элементов в оставшихся измерениях в последнем выходном аргументе.Пример 1: вывод одиночной строки-вектора
size ([1, 2; 3, 4; 5, 6]) ⇒ [ 3, 2 ]
Пример 2: число элементов во 2-м измерении (столбцы)
size ([1, 2; 3, 4; 5, 6], 2) ⇒ 2Пример 3: число выходных аргументов == число измерений
[nr, nc] = size ([1, 2; 3, 4; 5, 6]) ⇒ nr = 3 ⇒ nc = 2Пример 4: число выходных аргументов < число измерений
[nr, remainder] = size (ones (2, 3, 4, 5)) ⇒ nr = 2 ⇒ remainder = 60См. также: numel, ndims, length, rows, columns, size_equal, common_size.
- : isempty (a) ¶
-
Возвращает true, если a - пустая матрица (любое из её измерений равно нулю).
- : isnull (x) ¶
-
Возвращает true, если x - специальная нулевая матрица, строка или строка в одинарных кавычках.
Индексированная присваивание с таким нулевым значением в правой части должно удалять элементы массива. Эта функция используется вместо
isemptyпри перегрузке метода индексированного присваивания (subsasgn) для пользовательских классов.isnullиспользуется для различения этих двух случаев:A(I) = []и
X = []; A(I) = XВ первом присваивании правая часть -
[], которая является специальным нулевым значением. Пока индекс I не пустой, этот код должен удалять элементы из A, а не выполнять присваивание.Во втором присваивании правая часть пустая (потому что X -
[]), но она не нулевая. Этот код должен присвоить пустое значение элементам в A.Пример из встроенного класса char Octave демонстрирует поведение интерпретатора, когда
isnullиспользуется корректно.str = "Hello World"; nm = "Wally"; str(7:end) = nm # indexed assignment ⇒ str = Hello Wally str(7:end) = "" # indexed deletion ⇒ str = Hello
- : size_equal (a, b, …) ¶
-
Возвращает true, если размеры всех аргументов совпадают.
Конечные одиночные измерения игнорируются. При вызове с единственным аргументом или без аргументов,
size_equalвозвращает true.См. также: size, numel, ndims, common_size.
© 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/Object-Sizes.html