MATLAB でベクトルからゼロを削除する
このチュートリアルでは、MATLAB の find()
関数を使用してベクトルからゼロ値を削除する方法について説明します。
MATLAB でベクトルからゼロを削除する
ベクトルからゼロを削除するには、find()
関数を使用してベクトルに存在するゼロのインデックスまたは位置を見つける必要があります。これにより、ゼロのインデックスが返されます。次に、空のベクトルまたはヌルベクトルを使用してそれらに空の値を割り当てることができます。
デフォルトでは、find()
関数は非ゼロ要素のインデックスを返しますが、find()
関数内に条件を入れてゼロのインデックスを返すことができます。たとえば、いくつかのゼロを含むベクトルを定義し、find()
関数を使用してそれらを削除しましょう。
以下のコードを参照してください。
clc
clear
n = [1 0 2 0 3 0]
indices = find(n==0)
n(indices) = []
出力:
n =
1 0 2 0 3 0
indices =
2 4 6
n =
1 2 3
上記の出力から、find()
関数がインデックスを返したことがわかります。これは、ベクトルに存在するすべてのゼロ値の位置を示し、インデックスを使用して空のベクトルをゼロに割り当てました。
find()
関数内で、条件 n==0
を定義しました。これは、関数がベクトルの値を 1つずつ調べることを意味します。ベクトル値がゼロに等しい場合、そのインデックスを返し、次の値に移動します。
ベクトルに存在する他の値を削除または検索する場合など、他の条件を定義することもできます。find()
関数内で条件を定義するために、より小さい、等しい、より大きい、より小さいまたは等しい、より大きいまたは等しくないなどの条件演算子を使用できます。
すべてのゼロ値を削除せず、最初の 2つの値のようにいくつかのゼロ値のみを削除したい場合は、find()
関数の 2 番目の引数を使用できます。これは、出力インデックス。
たとえば、上記の例を繰り返して、ベクトルの最初の 2つのゼロを削除してみましょう。以下のコードを参照してください。
clc
clear
n = [1 0 2 0 3 0]
indices = find(n==0,2)
n(indices) = []
出力:
n =
1 0 2 0 3 0
indices =
2 4
n =
1 2 3 0
上記の出力では、最初の 2つのゼロが削除され、3 番目のゼロが指定されたベクトルにまだ存在していることがわかります。デフォルトでは、find()
関数はベクトルの先頭から要素の検索を開始します。
それでも、ベクトルの最後の要素から検索プロセスを開始し、方向を設定するために使用される find()
関数の 3 番目の引数を使用して、最初の要素に向かって移動するように設定することもできます。方向を設定するには、find()
関数の 3 番目の引数に文字列 last
を渡す必要があります。
たとえば、上記の例を繰り返して、指定されたベクトルに存在する最後の 2つのゼロを削除してみましょう。以下のコードを参照してください。
clc
clear
n = [1 0 2 0 3 0]
indices = find(n==0,2,'last')
n(indices) = []
出力:
n =
1 0 2 0 3 0
indices =
4 6
n =
1 0 2 3
上記のコードで、最後の 2つのゼロがベクトルから削除され、最初のゼロがまだ存在していることがわかります。find()
関数の詳細については、このリンクを確認してください。