3.3 对象大小

以下函数允许您确定变量或表达式的大小。这些函数是为所有对象定义的。当操作没有意义时,它们返回−1。例如,Octave 的数据结构类型没有行或列,因此 rowscolumns 函数对结构体参数返回−1。

 
n = ndims (A)

返回 A 的维度数。

对于任何数组,结果总是大于或等于 2。不计算尾随的单例维度,即,对于 size (A, d) = 1d 大于 2 的尾随维度 d

ndims (ones (4, 1, 2, 1))
    ⇒  3

另请参阅: size

 
nc = columns (A)
nc = width (A)

返回 A 的列数。

这相当于 size (A, 2)

编程注意:widthcolumns 的别名,可以互换使用。

另请参阅: rows, size, length, numel, isscalar, isvector, ismatrix

 
nr = rows (A)
nr = height (A)

返回 A 的行数。

这相当于 size (A, 1)

编程注意:heightrows 的别名,可以互换使用。

另请参阅: columns, size, length, numel, isscalar, isvector, ismatrix

 
n = numel (A)
n = numel (A, idx1, idx2, …)

返回对象 A 中的元素数量。

可选地,如果提供了索引 idx1idx2、…,则返回通过索引操作将得到的元素数量

A(idx1, idx2, ...)

请注意,索引不必是标量数字。例如,

a = 1;
b = ones (2, 3);
numel (a, b)

将返回 6,因为这是使用 b 进行索引的方式。或者,索引可以是代表冒号运算符的字符串 ":"。例如,

A = ones (5, 3);
numel (A, 2, ":")

将返回 3,因为第二行有 3 个列元素。

当对象用作具有 cs-list 索引的左值时,也会调用此方法,即 object{...}object(...).field

另请参阅: size, length, ndims

 
n = length (A)

返回对象 A 的长度。

空对象的长度为 0,标量的长度为 1,向量的长度为元素数量。对于矩阵或 N 维对象,长度是沿最大维度的元素数量(相当于 max (size (A)))。

另请参阅: numel, size

 
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 在最终输出参数中返回剩余维度中的元素总数。如果请求的维度 dim 大于 A 中的维度数,则 size 返回 1(而不是 0)。

示例 1:单行向量输出

size ([1, 2; 3, 4; 5, 6])
   ⇒  [ 3, 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

示例 5:维度中的元素数量 > 实际维度数量

sz4 = size (ones (2, 3), 4)
    ⇒  sz4 = 1

另请参阅: numel, ndims, length, rows, columns, size_equal, common_size

 
tf = isempty (A)

如果 A 是空对象(其任意一个维度为零),则返回 true。

另请参阅: isnull, isa

 
tf = isnull (x)

如果 x 是特殊的 null 数组、字符串或单引号字符串,则返回 true。

右侧带有此类 null 值的索引赋值应删除对应的数组元素。此函数用于在重载用户定义类的索引赋值方法(subsasgn)时替代 isemptyisnull 用于区分以下两种情况:

A(I) = []

X = []; A(I) = X

在第一个赋值中,右侧是 [],这是一个特殊的 null 值。只要索引 I 不为空,此代码应从 A 中删除元素,而不是执行赋值。

在第二个赋值中,右侧是空的(因为 X[]),但它不是 null。此代码应将空值赋值给 A 中的元素。

Octave 内置字符类中的一个示例演示了当正确使用 isnull 时解释器的行为。

str = "Hello World";
nm = "Wally";
str(7:end) = nm                # indexed assignment
  ⇒  str = Hello Wally
str(7:end) = ""                # indexed deletion
  ⇒  str = Hello

另请参阅: isempty, isindex

 
sz = sizeof (val)

返回 val 的大小(以字节为单位)。

另请参阅: whos

 
TF = size_equal (A, B)
TF = size_equal (A, B, …)

如果所有参数的维度一致,则返回 true。

尾随的单例维度将被忽略。当使用单个参数或无参数调用时,size_equal 返回 true。

另请参阅: size, numel, ndims, common_size

 
B = squeeze (A)

A 中删除单例维度并返回结果。

请注意,为了与 MATLAB 兼容,所有对象都有最小两个维度,行向量保持不变。

另请参阅: reshape


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2