Suche nach einem Wert in einem Array
In dieser Anleitung erkläre ich, wie man in einem MATLAB-Array nach einem Wert sucht, und zwar mit der Funktion find().
find(X,N,D)
Die Funktion hat drei Parameter:
- X
X ist ein Array und ein erforderlicher Parameter. - N
N ist eine Ganzzahl, die die maximale Anzahl der zu findenden Elemente angibt. Die Suche wird beendet, wenn diese Zahl erreicht ist. - D
D ist die Suchrichtung. Es kann "erste" sein, um die Suche beim ersten Element des Indexes zu beginnen, oder "letzte", um sie beim letzten Element zu beginnen.
Die Funktion gibt die Indizes der Elemente im Array zurück, die der Suche entsprechen.
Hinweis. Die Indizes von Arrays sind immer in aufsteigender Reihenfolge sortiert, auch wenn die Suche vom letzten Element aus beginnt.
Lassen Sie mich Ihnen ein praktisches Beispiel geben.
Erstellen Sie ein eindimensionales Array.
>> V = [ 1 0 2 0 4 0 4 ]
V =
1 0 2 0 4 0 4
Dieses Array hat sieben Elemente.
In MATLAB beginnt der Index von Elementen in einem Array bei eins.

Geben Sie find(V) ein, um die Nicht-Null-Elemente zu finden.
>> find(V)
ans =
1 3 5 7
Die Funktion gibt die Positionen zurück, an denen sich die Nicht-Null-Elemente befinden, also V[1], V[3], V[5] und V[7].

Hinweis. Das Gleiche gilt, auch wenn das Array in Reihen statt in Spalten angeordnet ist. Die find()-Funktion gibt die Positionen im Index zurück.

Um nur das erste Element zu finden, das der Bedingung entspricht, geben Sie 1 als zweiten Parameter ein.
Geben Sie find(V,1) ein
>> find(V,1)
ans = 1
Die Funktion gibt den Index des ersten Nicht-Null-Elements im Array zurück, also V[1].

Um Elemente zu suchen, die vom letzten beginnen, geben Sie "letzte" als dritten Parameter an.
Geben Sie find(V,1,"letzte") ein
>> find(V,1,"letzte")
ans = 7
In diesem Fall ist die Suchrichtung von rechts nach links.
Das erste Element, das der Bedingung entspricht, ist V[7].

Um Elemente zu suchen, die gleich Null sind, setzen Sie eine Verneinung vor den Arraynamen.
Geben Sie find(~V) ein
>> find(~V)
ans =
2 4 6
Die Funktion gibt die Positionen zurück, an denen die Elemente im Array gleich Null sind, also V[2], V[4] und V[6].

Um nur die Elemente im Array zu identifizieren, die größer als zwei sind, geben Sie find(V>2) ein
>> find(V>2)
ans =
5 7
Die Funktion gibt die Elemente V[5] und V[7] des Arrays zurück.

Wenn die Suche kein Element im Array auswählt, ist das Ergebnis eine leere Menge.
Zum Beispiel geben Sie find(V>5) ein, um nach Elementen zu suchen, die größer als 5 sind.
Das Ergebnis ist ein leeres Array, da der größte Wert im Array 4 ist.
>> find(V>5)
ans =
1×0 leerer doppelter Zeilenvektor
Um Elemente im Array mit Werten zwischen 1 und 3 zu suchen, geben Sie find(V<=3 & V>=1) ein
>> find(V<=3 & V>=1)
ans =
1 3
Die Elemente, die der Bedingung entsprechen, sind V[1] und V[3].

Was ist mit mehrdimensionalen Arrays?
Bei mehrdimensionalen Arrays, wie z.B. Matrizen, durchsucht die find-Funktion die Spalten nacheinander, beginnend mit der ersten Spalte.
Zum Beispiel erstellen wir eine 3x3-Matrix
>> M=[1 0 1; 0 1 0; 1 0 1]
M =
1 0 1
0 1 0
1 0 1
Diese Matrix hat zwei Dimensionen mit drei Reihen und drei Spalten
$$ \begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix} $$
Um die Indizes der Nicht-Null-Elemente zu finden, können Sie find(M) eingeben
>> find(M)
ans =
1
3
5
7
9
Die Indizes 1 und 3 entsprechen den ersten beiden Nicht-Null-Elementen in der ersten Spalte.

Der Index 5 entspricht dem Nicht-Null-Element in der zweiten Spalte, welches das fünfte Element in der Sequenz ist.

Die Indizes 7 und 9 entsprechen den Nicht-Null-Elementen in der dritten Spalte, welche die siebte und neunte Elemente in der Sequenz sind.

Im Grunde gibt die Funktion find() die Position der Elemente in der Matrix zurück, als ob sie Teil eines einzelnen Vektors wären.
Um die Position der Elemente in der Matrix mit Zeilen- und Spaltenkoordinaten zu erhalten, können Sie [row,col,v]=find(M) eingeben
>> [row,col]=find(M)
row =
1
3
2
1
3
col =
1
1
2
3
3
v =
1
1
1
1
1
Die Funktion extrahiert drei Arrays, row und col, welche die Zeilen- und Spaltenkoordinaten der Elemente enthalten. Ein weiteres Array, v, enthält die Werte.
Um die Koordinaten des ersten ausgewählten Elements zu sehen, können Sie row(1),col(1) eingeben
>> row(1),col(1)
ans = 1
ans = 1
Das erste Element befindet sich an den Koordinaten (1,1) in der ersten Zeile und der ersten Spalte.

Um die Koordinaten des zweiten ausgewählten Elements zu sehen, können Sie row(2), col(2) eingeben
>> row(2),col(2)
ans = 3
ans = 1
Das zweite Element befindet sich an den Koordinaten (3,1) in der dritten Zeile und der ersten Spalte.

Auf diese Weise können Sie die Position der Elemente in der Matrix genau bestimmen.