16.1 Finding Elements and Checking Conditions

Last-modified: 2025-03-30 (日) 20:04:48

16.1 要素の検索と条件のチェック

関数anyと は、all行列の要素のいずれかまたはすべてが何らかの条件を満たしているかどうかを判断するのに役立ちます。 関数は、find行列のどの要素が指定された条件を満たしているかを判断するのにも役立ちます。

: tf = any (x)

: tf = any (x, dim)

ベクトル引数の場合、ベクトルのいずれかの要素がゼロ以外の場合は true (論理 1) を返します。

行列引数の場合、論理 1 と 0 の行ベクトルを返します。各要素は、行列の対応する列の要素のいずれかが 0 以外であるかどうかを示します。例:

any (eye (2, 4))
 ⇒ [ 1, 1, 0, 0 ]

オプションの引数dimが指定されている場合は、次元dimに沿って動作します。例:

any (eye (2, 4), 2)
⇒ [ 1; 1 ]

See also: all.

: tf = all (x)

: tf = all (x, dim)

ベクトル引数の場合、ベクトルのすべての要素がゼロ以外の場合は true (論理 1) を返します。

行列引数の場合、各要素が行列の対応する列のすべての要素がゼロでないかどうかを示す論理 1 と 0 の行ベクトルを返します。
例:

all ([2, 3; 1, 0])
   ⇒ [ 1, 0 ]

オプションの引数dimが指定されている場合は、次元dimに沿って作業します。

See also: any.

比較演算子(比較演算子を参照)は 1 と 0 の行列を返すため、要素が 0 でないかどうかだけでなく、多くの点について行列をテストするのは簡単です。たとえば、

all (all (rand (5) < 0.9))
  ⇒ 0

ランダムな 5 x 5 行列をテストして、そのすべての要素が 0.9 未満であるかどうかを確認します。

Note that in conditional contexts (like the test clause of if and while statements) Octave treats the test as if you had typed all (all (condition)).

: z = xor (x, y)

: z = xor (x1, x2, …)

xとyの排他的論理和を返します。

ブール式xとy の場合、 xまたは yのいずれかがtrue の場合にのみ true になります。それ以外の場合、xとy が両方とも true または両方とも false の場合は、false を返します。 xor (x, y)xor

XOR演算の真理値表は

x	y	z
-	-	-
0	0	0
1	0	1
0	1	1
1	1	0

2 つ以上の引数が指定された場合、xor 演算は左から右に累積的に適用されます。

(...((x1 XOR x2) XOR x3) XOR ...)

See also: and, or, not.

: y = diff (x)

: y = diff (x, k)

: y = diff (x, k, dim)

xが長さnのベクトルの場合、 diff (x) は第 1 階差分のベクトル x (2) - x (1)、…、x (n) - x (n-1) です。

xが行列の場合、 は最初の非シングルトン次元に沿った列の差の行列です。 diff (x)

2 番目の引数はオプションです。 が指定されている場合 、(kは負でない整数)はk番目の差分を返します。 k が行列の最初の非シングルトン次元よりも大きい可能性があります。この場合、 は 次の非シングルトン次元に沿って差分を計算し続けます。 diff (x, k)diff

差分を取る次元は、オプションの変数dimで明示的に指定できます。この場合、 この次元に沿ってk次の差分が計算されます。kが超過した場合は、 size (x, dim)空の行列が返されます。

See also: sort, merge.

: tf = isinf (x)

xの要素が無限である場合は true、無限でない場合は false となる論理配列を返します。

For example:

isinf ([13, Inf, NA, NaN])
⇒ [ 0, 1, 0, 0 ]

See also: isfinite, isnan, isna.

: tf = isnan (x)

の要素が NaN 値の場合は true、そうでない場合は false となる論理配列を返します。

NA 値も NaN 値とみなされます。例:

isnan ([13, Inf, NA, NaN])
⇒ [ 0, 0, 1, 1 ]

See also: isna, isinf, isfinite.

: tf = isfinite (x)

xの要素が有限値の場合は true、そうでない場合は false となる論理配列を返します。

For example:

isfinite ([13, Inf, NA, NaN])
 ⇒ [ 1, 0, 0, 0 ]

See also: isinf, isnan, isna.

: [err, yi, …] = common_size (xi, …)

すべての入力引数がスカラーであるか、または共通サイズであるかを判断します。

true の場合、errはゼロで、yiは共通サイズの行列であり、すべてのエントリは、スカラーの場合はxiに等しく、それ 以外の場合は xi に等しくなります。入力を共通サイズにできない場合、errは 1 で、yiはxiになります。例:

[err, a, b] = common_size ([1 2; 3 4], 5)
 ⇒ err = 0
 ⇒ a = [ 1, 2; 3, 4 ]
 ⇒ b = [ 5, 5; 5, 5 ]

これは、引数がスカラーまたは共通サイズのいずれかになる関数を実装する場合に便利です。

See also: size, size_equal, numel, ndims.

: idx = find (x)

: idx = find (x, n)

: idx = find (x, n, direction)

: [i, j] = find (…)

: [i, j, v] = find (…)

行列の非ゼロ要素のインデックスのベクトルを、 xが行ベクトルの場合は行として、それ以外の場合は列として返します。

各行列要素の単一のインデックスを取得するために、Octave は行列の列が 1 つの長いベクトル (Fortran 配列が格納されているのと同じ) を形成すると想定します。例:

find (eye (2))
 ⇒ [ 1; 4 ]

2 つの入力が指定されている場合、n は行列またはベクトルの先頭から検索する要素の最大数を示します。

3 つの入力が指定された場合、direction は"first"またはのいずれかであり "last"、それぞれ最初または最後の n 個のインデックスのみを要求します。ただし、インデックスは常に昇順で返されます。

2 つの出力が要求された場合、find行列の非ゼロ要素の行と列のインデックスを返します。例:

[i, j] = find (2 * eye (2))
 ⇒ i = [ 1; 2 ]
  ⇒ j = [ 1; 2 ]

3 つの出力が要求された場合は、findゼロ以外の値を含むベクトルも返します。例:

[i, j, v] = find (3 * eye (2))
      ⇒ i = [ 1; 2 ]
      ⇒ j = [ 1; 2 ]
      ⇒ v = [ 3; 3 ]

x がサイズ mxnxpx … の多次元配列である場合、 jには、 x がサイズ mx (n + p + …) の 2 次元行列に平坦化された 場合と同様の列の位置が含まれます。

この関数は、非ゼロ要素をベクトルとして抽出し、それを使用して元の行列を作成するため、スパース行列に特に便利です。例:

sz = size (a);
[i, j, v] = find (a);
b = sparse (i, j, v, sz(1), sz(2));

See also: nonzeros.

: idx = lookup (table, y)

: idx = lookup (table, y, opt)

ソートされたテーブル内の値を検索します。

この関数は通常、補間の前段階として使用されます。

テーブルが増加し、長さが N で、のidx = lookup (table, y)場合、 テーブル内のtable(idx(i)) <= y(i) < table(idx(i+1))すべての に対して となります。の場合、は 0 です。 またはの場合、は N です。 y(i)y(i) < table(1)idx(i)y(i) >= table(end)isnan (y(i))idx(i)

テーブルが減少する場合、テストは逆になります。厳密に単調でないテーブルの場合、空の間隔は常にスキップされます。テーブルが単調でない場合、またはテーブルに NaN が含まれている場合、結果は未定義になります。

検索の複雑さは O(M*log(N)) です。ここで、 M はyのサイズです。 yもソートされている特別なケースでは、複雑さは O(min (M*log(N), M+N)) です。

tableとy は文字列のセル配列にすることもできます (またはy は単一の文字列にすることもできます)。この場合、文字列の検索は辞書式の比較を使用して実行されます。

optsを指定する場合、追加オプションを示す文字を含む文字列にする必要があります。

m

一致。 テーブル内に出現するtable(idx(i)) == y(i)場合は一致し、そうでない場合はidx(i)ゼロになります。 y(i)

b

ブール値。 テーブルに含まれているかどうかを idx(i)示す論理 1 または 0 です。y(i)

l

左。数値検索の場合、左端のサブ間隔はマイナス無限大まで拡張されます (つまり、すべてのインデックスは少なくとも 1)。

r

右。数値検索の場合、右端のサブ間隔は無限大に拡張されます (つまり、すべてのインデックスは最大で N-1 になります)。

注意:テーブルがソートされていない場合、結果はlookup 予測できません。

変数の要素が持つプロパティではなく、変数が存在するかどうかをチェックしたい場合は、「変数のステータス」を参照してください。