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.