ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

find

非ゼロ要素のインデックスと値を見つける

構文

ind = find(X)
ind = find(X, k)
ind = find(X, k, 'first')
ind = find(X, k, 'last')
[row,col] = find(X, ...)
[row,col,v] = find(X, ...)

説明

ind = find(X) は、配列 X の非ゼロ要素をすべて検索し、それらの要素の「線形インデックス」をベクトル ind で返します。X が行ベクトルの場合、ind は行ベクトルになり、X が列ベクトルの場合には、ind は列ベクトルになります。X にゼロ要素が含まれる場合、または X が空配列の場合、ind は空配列になります。

ind = find(X, k) または ind = find(X, k, 'first') は、多くても X の非ゼロ エントリに対応する最初の k インデックスを返します。k は、正の整数でなければなりませんが、任意のデータ型を使用できます。

ind = find(X, k, 'last') は、多くても X の非ゼロ エントリに対応する最後の k インデックスを返します。

[row,col] = find(X, ...) は、行列 X の非ゼロ エントリの行と列のインデックスを返します。この構文は、スパース行列を操作する際に特に便利です。X が 3次元以上の N 次元配列の場合、col には列の線形インデックスが含まれます。たとえば、X が 5 x 7 x 3 の配列で、X(4,2,3) に非ゼロ要素をもつ場合、関数 find は 4 を row に返し、16 を col に返します。すなわち、(ページ 1 の 7 列) + (ページ 2 の 7 列) + (ページ 3 の 2 列) = 16 となります。

[row,col,v] = find(X, ...) は、X の非ゼロ エントリの行ベクトルまたは列ベクトル v、および行と列のインデックスを返します。X が論理式の場合、v は論理配列になります。出力 v には、式 X の評価で取得された論理配列の非ゼロ要素が含まれます。たとえば、

A= magic(4)
A =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

[r,c,v]= find(A>10);

r', c', v'
ans =
     1     2     4     4     1     3
ans =
     1     2     2     3     4     4
ans =
     1     1     1     1     1     1

返されたベクトル v は、次の N の非ゼロ要素を含む論理配列です。

N=(A>10)

例 1

X = [1 0 4 -3 0 0 0 8 6];
indices = find(X)

これは、X の非ゼロ エントリに対する線形インデックスを返します。

indices =
     1     3     4     8     9

例 2

X の定義に論理式を使用できます。たとえば、

find(X > 2)

これは、X の 2 より大きいエントリに対応する線形インデックスを返します。

ans =
     3     8     9

例 3

次の find コマンドの場合、

X = [3 2 0; -5 0 7; 0 0 1];
[r,c,v] = find(X) 

X の非ゼロ エントリに対する行インデックスのベクトルを返します。

r =
     1
     2
     1
     2
     3

X の非ゼロ エントリに対する列インデックスのベクトルを返します。

c =
     1
     1
     2
     3
     3

X の非ゼロ エントリを含むベクトルを返します。

v =
     3
    -5
     2
     7
     1

例 4

X = [3 2 0; -5 0 7; 0 0 1];
[r,c,v] = find(X>2)

N=(X>2)N の非ゼロ エントリに対する行インデックスのベクトルを返します。

r =
     1
     2

N=(X>2)N の非ゼロ エントリに対する列インデックスのベクトルを返します。

c =
     1
     3

N=(X>2)N の非ゼロ要素を含む論理配列です。

v =
     1
     1

前述のとおり、論理式で関数 find を使用する場合、出力ベクトル v には入力配列の非ゼロ エントリは含まれません。その代わり、論理式の評価後に返された非ゼロ値が含まれます。

例 5

ベクトルの演算を示します。

x = [11  0  33  0  55]';

find(x)
ans =
     1
     3
     5

find(x == 0)
ans =
     2
     4

find(0 < x & x < 10*pi)
ans =
     1

例 6

行列を作成します。

M = magic(3)
M =
     8     1     6
     3     5     7
     4     9     2

find(M > 3, 4)

これは、M の 3 より大きいエントリの最初の 4 個に対する線形インデックスを返します。

ans =
     1
     3
     5
     6

例 7

X がすべてゼロのベクトルの場合、find(X) は空行列を返します。たとえば、

indices = find([0;0;0])
indices =
   Empty matrix: 0-by-1 

参考

| | | | | |

この情報は役に立ちましたか?