3.3 Object Sizes

Last-modified: 2025-03-20 (木) 20:16:18

3.3 オブジェクトのサイズ

次の関数を使用すると、変数または式のサイズを判別できます。これらの関数はすべてのオブジェクトに対して定義されています。操作が意味をなさない場合は -1 を返します。たとえば、Octave のデータ構造型には行も列もないため、関数rowsと columns関数は構造引数に対して -1 を返します。

: n = ndims (A)

Aの次元数を返します。

どの配列でも、結果は常に 2 以上になります。末尾のシングルトン次元はカウントされません。つまり、末尾の次元d が 2 より大きい場合、 となります。 size (A, d) = 1

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

See also: size.

: nc = columns (A)

Aの列数を返します。

これは と同等です。 size (A, 2)

See also: rows, size, length, numel, isscalar, isvector, ismatrix.

: nr = rows (A)

Aの行数を返します。

これは と同等です。 size (A, 1)

See also: 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, ":")

2 行目には 3 つの列エントリがあるため、3 が返されます。

このメソッドは、オブジェクトが cs-list インデックス付きの lvalue として出現する場合にも呼び出されます (つまり、object{…}またはobject(…).field)。
See also: size, length, ndims.

: n = length (A)

オブジェクトAの長さを返します。
長さは、空のオブジェクトの場合は 0、スカラーの場合は 1、ベクトルの場合は要素数になります。行列または N 次元オブジェクトの場合、長さは最大次元に沿った要素数です ( に相当)。 max (size (A))

See also: numel, size.

: sz = size (A)

: dim_sz = size (A, dim)

: dim_sz = size (A, d1, d2, …)

: [rows, cols, …, dim_N_sz] = size (…)

オブジェクトAの各次元のサイズ (要素数) を含む行ベクトルを返します。

2 番目の引数dimが指定された場合、対応する次元のサイズを返します。dimがベクトルの場合、対応する各次元を返します。複数の次元を個別の引数として指定することもできます。

出力引数が 1 つの場合は、size行ベクトルを返します。出力引数が複数ある場合は、sizeN 番目の引数に次元 N のサイズを返します。行数 (次元 1) は最初の引数に返され、列数 (次元 2) は 2 番目の引数に返されます。Aの次元数が出力引数の数より多い場合は、size残りの次元の要素の合計数が最終出力引数に返されます。要求された次元 dimがAの次元数より大きい場合は、size 1 (0 ではない) を返します。

例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

例5: 次元内の要素数 > 実際の次元数

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

See also: numel, ndims, length, rows, columns, size_equal, common_size.

: tf = isempty (A)

Aが空のオブジェクト (いずれかの次元がゼロ) の 場合は true を返します。

See also: isnull, isa.

: tf = isnull (x)

xが特殊な null 配列、文字列、または一重引用符で囲まれた文字列 の場合は true を返します。

右側にこのような null 値を持つインデックス割り当てでは、配列要素を削除する必要があります。この関数は、ユーザー定義クラスの isemptyインデックス割り当てメソッド ( ) をオーバーロードするときに、の代わりに使用されます。subsasgnisnullは、これら 2 つのケースを区別するために使用されます。

A(I) = []
and
X = []; A(I) = X

最初の代入では、右側は特殊な null 値です。インデックスIが空でない[]限り、このコードは代入を実行するのではなく、 Aから要素を削除する必要があります。

2 番目の代入では、右側は空ですが ( Xが である ため[])、null ではありません。このコードでは、 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

See also: isempty, isindex.

: sz = sizeof (val)

valのサイズをバイト単位で返します。

See also: whos.

: TF = size_equal (A, B)

: TF = size_equal (A, B, …)
すべての引数の次元が一致する場合は true を返します。

末尾のシングルトン ディメンションは無視されます。単一の引数で呼び出された場合、または引数なしで呼び出された場合は、size_equaltrue を返します。

See also: size, numel, ndims, common_size.

: B = squeeze (A)

Aからシングルトン次元を削除し、結果を返します。

MATLABとの互換性を保つために、すべてのオブジェクトは最低 2 次元を持ち、行ベクトルは変更されないことに注意してください。

See also: reshape.