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.

Die Indizes der Elemente im Array

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].

Das Ergebnis der Suche.

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.
Beispiel der find()-Funktion

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].

Das Ergebnis der Suche.

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].

Das Ergebnis der Suche.

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].

Das Ergebnis der Suche.

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.

Das Ergebnis der Suche.

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].

Das Ergebnis der Suche.

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.

die ersten zwei Elemente

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

das fünfte Element in der Sequenz

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

die Elemente an den Positionen 7 und 9

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.

das erste Element

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.

das zweite Element

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

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Matlab array

Vektoren

Matrizen

Struktur und Zellenarray