Wie man einen Wert in einem Array in Octave findet
In diesem Leitfaden erkläre ich, wie man Daten in einem Array mit Hilfe der find()-Funktion von Octave suchen und finden kann.
find(X,N,D)
Die find()-Funktion hat drei Parameter:
- X
Der erste Parameter X ist das Array, in dem gesucht werden soll. Es ist ein erforderlicher Parameter. - N
Das ist die maximale Anzahl an Elementen, die man aus der Suche erhalten möchte. Die Suche stoppt nach N Ergebnissen. - D
Das ist die Suchrichtung. Man kann "first" eingeben, um von dem ersten zum letzten Element zu suchen oder "last", um von dem letzten zum ersten Element des Indexes zu suchen. Standardmäßig ist es "first".
Diese Funktion extrahiert die Indizes der Elemente, die der Suche im Array entsprechen.
Hinweis. Die find()-Funktion gibt die Indizes der Arrays in aufsteigender Reihenfolge zurück. Nicht in der Reihenfolge der Extraktion.
Ich gebe Ihnen ein praktisches Beispiel.
Erstellen Sie ein Array und weisen Sie es der Variablen V zu:
>> V = [ 1 0 2 0 4 0 4 ]
V =
1 0 2 0 4 0 4
Es gibt sieben Elemente im Array.
Vergessen Sie nicht, dass das erste Element eines Arrays in Octave den Index 0 hat.

Geben Sie find(V) ein, um die von Null verschiedenen Elemente zu finden.
>> find(V)
ans =
1 3 5 7
Die find()-Funktion zeigt die Indexposition der Elemente des Arrays mit von Null verschiedenen Werten an, d.h. V[1], V[3], V[5] und V[7].

Die Ergebnisse sind die Positionen der Elemente im Index des Arrays. Sie sind nicht die Werte der Elemente.
Hinweis. Die find()-Funktion gibt die gleichen Ergebnisse zurück, auch wenn das Array in einer Spalte angeordnet ist.

Geben Sie find(V,1) ein, um nur ein Ergebnis aus der Suche zu erhalten.
>> find(V,1)
ans = 1
Die Funktion gibt die Position des ersten von Null verschiedenen Elements im Array zurück, d.h. V[1].

Geben Sie nun find(V,1,"last") ein, um von rechts nach links zu suchen.
>> find(V,1,"last")
ans = 7
Das Ergebnis ist das Element V[7], da es das erste mit dem von Null verschiedenen Wert V[7]=4 von rechts ist.

Wenn Sie Elemente finden möchten, die gleich Null sind, geben Sie eine Negation vor dem Array-Namen ein.
Geben Sie find(~V) ein:
>> find(~V)
ans =
2 4 6
Die Suche extrahiert die Positionen im Index der Elemente mit dem Wert gleich Null.
Die Ergebnisse sind V[2], V[4] und V[6].

Geben Sie find(V>2) ein, um nur Array-Elemente mit Werten größer als zwei zu finden:
>> find(V>2)
ans =
5 7
Die Funktion findet die Elemente V[5] und V[7] des Arrays.

Wenn die Suche keine Ergebnisse liefert, gibt die find()-Funktion eine leere Menge zurück.
Zum Beispiel, wenn Sie find(V>5) eingeben, ist das Ergebnis ein leeres Array.
>> find(V>5)
ans = [ ](1x0)
Geben Sie find(V<=3 & V>=1) ein, um Array-Elemente mit einem Wert zwischen 1 und 3 zu suchen:
>> find(V<=3 & V>=1)
ans =
1 3
Die Suche extrahiert die Elemente V[1] und V[3] des Arrays.

Wie sucht man in einem mehrdimensionalen Array?
Wenn das Array mehrdimensional ist (z.B. Matrix), sucht die find()-Funktion die Daten spaltenweise.
Erstellen Sie zum Beispiel eine Matrix mit drei Zeilen und drei Spalten.
>> M=[1 0 1; 0 1 0; 1 0 1]
M =
1 0 1
0 1 0
1 0 1
Das Array ist ein zweidimensionales Array
$$ \begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix} $$
Geben Sie find(M) ein, um nach Elementen mit von Null verschiedenen Werten zu suchen.
>> find(M)
ans =
1
3
5
7
9
Die Funktion gibt die Positionen der Elemente im Index zurück, als ob das Array eindimensional wäre, indem sie die Elemente in Spalten iteriert.
Zum Beispiel sind die Indizes 1 und 3 die ersten beiden von Null verschiedenen Elemente, die in der ersten Spalte gefunden wurden.

Index 5 ist das von Null verschiedene Element in der zweiten Spalte.
Es ist das fünfte Element, das von der Suche analysiert wurde.

Die Indizes 7 und 9 sind die von Null verschiedenen Elemente in der dritten Spalte.
Sie sind das siebte und neunte Element in der Reihenfolge der Elemente, die von der Suche analysiert wurden.

Wenn Sie als Ergebnis die Koordinaten (Zeile; Spalte) der Elemente in der Matrix erhalten möchten, müssen Sie einen anderen Befehl verwenden.
Geben Sie [row, col, v]=find(M) ein:
>> [row,col]=find(M)
row =
1
3
2
1
3
col =
1
1
2
3
3
v =
1
1
1
1
1
In diesem Fall extrahiert die Funktion drei Arrays:
- das erste Array (row) enthält die Zeilennummern
- das zweite Array (col) enthält die Spaltennummern
- das dritte Array (v) enthält die Werte der Elemente
Zum Beispiel, um die Koordinaten des ersten Suchergebnisses anzuzeigen, geben Sie row(1),col(1) ein:
>> row(1),col(1)
ans = 1
ans = 1
Das erste von Null verschiedene Element der Matrix befindet sich bei den Koordinaten (1,1), d.h. in der ersten Zeile und ersten Spalte der Matrix.

Um die Koordinaten des zweiten Ergebnisses anzuzeigen, geben Sie row(2),col(2) ein:
>> row(2),col(2)
ans = 3
ans = 1
Das zweite Element mit einem von Null verschiedenen Wert befindet sich bei den Koordinaten (3,1), d.h. in der dritten Zeile und ersten Spalte der Matrix.

Auf diese Weise können Sie die genaue Position der Elemente im Array ermitteln.