MATLAB の find()関数
このチュートリアルでは、Matlab の find()
関数について説明します。
MATLAB の find()
関数
find()
関数は、ベクトルまたは行列内のゼロ以外の要素の値とインデックスを検索します。たとえば、ベクトル内のゼロ以外の要素のインデックスを見つけましょう。以下のコードを参照してください。
clc
MyVect = [1 2 5 6 0]
indices = find(MyVect)
出力:
MyVect =
1 2 5 6 0
indices =
1 2 3 4
5つの要素がありますが、値がゼロの要素があるため、出力には 4つのインデックスしかありません。を使用してベクトルに存在する値のインデックスを検索するには、find 関数内で値を渡す必要があります。たとえば、数値を含むベクトルがあり、特定の値のインデックスを見つけたいとします。これを行うには、find 関数と等号の中に値を入力すると、find 関数はその値のインデックスを返します。
たとえば、ベクトルを定義し、ベクトル内の特定の値のインデックスを見つけましょう。以下のコードを参照してください。
clc
MyVect = [1 2 5 6 0]
index = find(MyVect==5)
出力:
MyVect =
1 2 5 6 0
index =
3
出力では、値 5 はベクトル内のインデックス 3 に存在します。検索関数内で条件を定義することもできます。たとえば、1 より大きく 10 より小さい値のインデックスを検索する場合です。大なり記号と小なり記号を使用して、find()
関数内で定義できます。たとえば、ベクトルを定義して、5 より大きく 10 より小さい値を見つけましょう。以下のコードを参照してください。
clc
MyVect = [1 2 5 6 8 12 16]
index = find(MyVect<10 & MyVect>5)
出力:
MyVect =
1 2 5 6 8 12 16
index =
4 5
出力には 5 より大きく 10 より小さい 2つの値があり、それらのインデックスは変数インデックス内に格納されます。マトリックス内では、値は行と列に配置され、find()
関数を使用して要素の位置を見つけることができます。たとえば、行列を作成し、find 関数を使用して特定の値の行番号と列番号を検索してみましょう。以下のコードを参照してください。
clc
MyVect = [1 2 5 ; 8 12 16]
[row,col] = find(MyVect==8)
出力:
MyVect =
1 2 5
8 12 16
row =
2
col =
1
出力では、値 8 は 2 番目の行と最初の列にあります。行列内の値の単一のインデックスのみを検索する場合は、それも検索できますが、行列内の要素は列方向に配置されることに注意する必要があります。たとえば、2 行 2 列の行列では、最初の 2つのインデックスは最初の列にあり、他の 2つのインデックスは 2 番目の列にあります。たとえば、find()
関数を使用して、行列内の値のインデックスを検索してみましょう。以下のコードを参照してください。
clc
MyVect = [1 2 5 ; 8 12 16]
index = find(MyVect==8)
出力:
MyVect =
1 2 5
8 12 16
index =
2
出力では、値 8 がマトリックス内のインデックス 2 に存在します。検索関数内で行列の条件を定義することもできます。たとえば、10 未満の値の行と列の数を検索する場合は、find()
関数内で less-than 演算子を使用して条件を定義することによっても実行できます。