3.3对象大小

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

 
: n = ndims (A)

返回A的维度数.

对于任何数组,结果总是大于或等于2。后面的奇异维度不计算在内,即后面的维度d大于2,其中size (A, d) = 1.

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中的元素数.

可选地,如果索引idx1, idx2,…,返回索引将返回元素数如下:

A(idx1, idx2, ...)

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

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

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

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

将返回3,因为第2行有3个列分量。

当对象显示为具有cs-list下标引用的左值时,也调用此方法,即,object{…}object(…).field.

详见: size, length, ndims.

广告
 
: n = length (A)

返回对象A的长度.

空对象的长度为0,标量的长度为1,向量的元素数为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个维度的大小。第一个参数返回行数(维度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)

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

详见: isnull, isa.

广告
 
: tf = isnull (x)

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

右侧有null值的索引赋值将删除矩阵中的对应元素。此函数用于代替isempty重载索引赋值方法(subsasgn),可用于用户定义的类。isnull用于区分这两种情况:

A(I) = []

X = []; A(I) = X

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

在第二个赋值中,右侧为空(因为X[]),但此代码确实无效,而是将空值赋值给A中的元素.

Octave内置char类中的一个示例演示了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-2025 Octave中文网

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