Main Content

find

Ermitteln von Indizes und Werten von Elementen ungleich null

Beschreibung

Beispiel

k = find(X) gibt einen Vektor zurück, der die linearen Indizes jedes Elements ungleich null im Array X enthält.

  • Wenn X ein Vektor ist, gibt find einen Vektor zurück, der dieselbe Orientierung hat wie X.

  • Wenn X ein mehrdimensionales Array ist, gibt find einen Spaltenvektor der linearen Indizes des Ergebnisses zurück.

Beispiel

k = find(X,n) gibt die ersten n Indizes zurück, die den Elementen ungleich null in X entsprechen.

Beispiel

k = find(X,n,direction), wobei direction hier 'last' (letzte) ist, findet die letzten n Indizes, die Elementen ungleich null in X entsprechen. Der Standardwert für direction ist 'first' (erste). Mit diesem Wert werden die ersten n Indizes gefunden, die Elementen ungleich null entsprechen.

Beispiel

[row,col] = find(___) gibt die Indexzeichen für Zeilen und Spalten jedes Elements ungleich null im Array X an und verwendet dazu beliebige Eingabeargumente in den vorherigen Syntaxen.

Beispiel

[row,col,v] = find(___) gibt auch den Vektor v zurück, der die Elemente ungleich null von X enthält.

Beispiele

alle reduzieren

Ermitteln Sie die Elemente ungleich null in einer 3x3-Matrix.

X = [1 0 2; 0 1 1; 0 0 4]
X = 3×3

     1     0     2
     0     1     1
     0     0     4

k = find(X)
k = 5×1

     1
     5
     7
     8
     9

Wenden Sie den logischen Operator not auf X an, um die Nullen zu lokalisieren.

k2 = find(~X)
k2 = 4×1

     2
     3
     4
     6

Ermitteln Sie in der 4x4-Matrix eines magischen Quadrats die ersten fünf Elemente, die kleiner als 10 sind.

X = magic(4)
X = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

k = find(X<10,5)
k = 5×1

     2
     3
     4
     5
     7

Betrachten Sie die entsprechenden Elemente von X.

X(k)
ans = 5×1

     5
     9
     4
     2
     7

Um einen bestimmten ganzzahligen Wert zu ermitteln, verwenden Sie den Operator ==. Ermitteln Sie beispielsweise in einem 1x10-Vektor ungerader Ganzzahlen das Element, das gleich 13 ist.

x = 1:2:20
x = 1×10

     1     3     5     7     9    11    13    15    17    19

k = find(x==13)
k = 7

Verwenden Sie zum Ermitteln eines nicht ganzzahligen Werts einen Toleranzwert, der auf Ihren Daten basiert. Anderenfalls ist das Ergebnis aufgrund von Gleitkomma-Rundungsfehlern manchmal eine leere Matrix.

y = 0:0.1:1
y = 1×11

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000    1.0000

k = find(y==0.3)
k =

  1x0 empty double row vector
k = find(abs(y-0.3) < 0.001)
k = 4

Erstellen Sie die 6x6-Matrix eines magischen Quadrats, in der alle ungerade indizierten Elemente gleich null sind.

X = magic(6);
X(1:2:end) = 0
X = 6×6

     0     0     0     0     0     0
     3    32     7    21    23    25
     0     0     0     0     0     0
     8    28    33    17    10    15
     0     0     0     0     0     0
     4    36    29    13    18    11

Suchen Sie nach den letzten vier Elementen ungleich null.

k = find(X,4,'last')
k = 4×1

    30
    32
    34
    36

Ermitteln Sie die ersten drei Elemente in einer 4x4-Matrix, die größer als 0 und kleiner als 10 sind. Geben Sie zwei Ausgaben an, um die Indexzeichen der Zeilen und Spalten zu den Elementen zurückzugeben.

X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]
X = 4×4

    18     3     1    11
     8    10    11     3
     9    14     6     1
     4     3    15    21

[row,col] = find(X>0 & X<10,3)
row = 3×1

     2
     3
     4

col = 3×1

     1
     1
     1

Die erste Instanz ist X(2,1), in diesem Fall 8.

Ermitteln Sie die Elemente ungleich null in einer 3x3-Matrix. Geben Sie drei Ausgaben an, um die Indexzeichen für Zeilen, die Indexzeichen für Spalten und die Elementwerte zurückzugeben.

X = [3 2 0; -5 0 7; 0 0 1]
X = 3×3

     3     2     0
    -5     0     7
     0     0     1

[row,col,v] = find(X)
row = 5×1

     1
     2
     1
     2
     3

col = 5×1

     1
     1
     2
     3
     3

v = 5×1

     3
    -5
     2
     7
     1

Ermitteln Sie die Elemente ungleich null in einem 4x2x3-Array. Geben Sie zwei Ausgaben an, row und col, um die Indexzeichen für Zeilen und Spalten der Elemente ungleich null zurückzugeben. Wenn die Eingabe ein mehrdimensionales Array (N > 2) ist, gibt find col als linearen Index über die N-1 nachgeordneten Dimensionen von X zurück.

X = zeros(4,2,3);
X([1 12 19 21]) = 1
X = 
X(:,:,1) =

     1     0
     0     0
     0     0
     0     0


X(:,:,2) =

     0     0
     0     0
     0     0
     1     0


X(:,:,3) =

     0     1
     0     0
     1     0
     0     0

[row,col] = find(X)
row = 4×1

     1
     4
     3
     1

col = 4×1

     1
     3
     5
     6

Eingabeargumente

alle reduzieren

Eingabearray, angegeben als Skalar, Vektor, Matrix oder mehrdimensionales Array.

Datentypen: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Unterstützung komplexer Zahlen: Ja

Anzahl der zu ermittelnden Elemente ungleich null, angegeben als positiver ganzzahliger Skalar. Standardmäßig sucht find(X,n) nach den ersten n Elementen ungleich null in X.

Suchrichtung, angegeben als Zeichenfolge 'first' oder 'last'. Suchen Sie mithilfe von find(X,n,'last') nach den letzten n Elementen ungleich null in X.

Ausgabeargumente

alle reduzieren

Indizes der Elemente ungleich null, zurückgegeben als Vektor.

  • Wenn es sich bei X um einen Zeilenvektor handelt, ist k ebenfalls ein Zeilenvektor. Anderenfalls ist k ein Spaltenvektor.

  • k ist ein leerer Zeilenvektor oder ein leerer Spaltenvektor, wenn X ein leeres Array ist oder keine Elemente ungleich null enthält.

  • find verwendet den Grundsatz, dass k eine leere Matrix [] ist, wenn X eine leere Matrix [] ist.

Sie können die Werte ungleich null in X mithilfe von X(k) zurückgeben.

Indexzeichen für Zeilen, zurückgegeben als Vektor. Zusammen geben row und col die Indexzeichen X(row,col) an, die den Elementen ungleich null in X entsprechen.

Indexzeichen für Spalten, zurückgegeben als Vektor. Zusammen geben row und col die Indexzeichen X(row,col) an, die den Elementen ungleich null in X entsprechen.

Wenn X ein mehrdimensionales Array mit N > 2 ist, dann ist col ein linearer Index über die N-1 nachgeordneten Dimensionen von X. Dadurch bleibt die Relation X(row(i),col(i)) == v(i) erhalten.

Elemente ungleich null von X, zurückgegeben als Vektor.

Mehr über

alle reduzieren

Lineare Indizes

Ein linearer Index lässt die Verwendung eines einzelnen Indexzeichens zur Indizierung in ein Array zu, z. B. A(k). MATLAB® verarbeitet das Array als einzelnen Spaltenvektor, wobei jede Spalte an den unteren Rand der vorherigen Spalte angehängt ist. Daher werden bei der linearen Indizierung die Elemente in den Spalten von oben nach unten und von links nach rechts nummeriert.

Angenommen, es liegt eine 3x3-Matrix vor. Sie können das Element A(2,2) mit A(5) und das Element A(2,3) mit A(8) referenzieren. Der lineare Index ändert sich abhängig von der Größe des Arrays. A(5) gibt für eine 3x3-Matrix ein Element an einer anderen Position zurück als für eine 4x4-Matrix.

Die Funktionen sub2ind und ind2sub sind hilfreich bei der Konvertierung zwischen Indexzeichen und linearen Indizes.

Tipps

  • Zum Ermitteln von Array-Elementen, die eine Bedingung erfüllen, verwenden Sie find in Verbindung mit einem relationalen Ausdruck. Beispielsweise gibt find(X<5) die linearen Indizes zu den Elementen in X zurück, die kleiner als 5 sind.

  • Um die Elemente in X, die die Bedingung X<5 erfüllen, direkt zu ermitteln, verwenden Sie X(X<5). Vermeiden Sie Funktionsaufrufe wie X(find(X<5)), die find unnötigerweise auf eine logische Matrix anwenden.

  • Wenn Sie find mit einer relationalen Operation wie X>1 ausführen, müssen Sie unbedingt beachten, dass das Ergebnis der relationalen Operation eine logische Matrix aus Einsen und Nullen ist. Beispielsweise gibt der Befehl [row,col,v] = find(X>1) einen Spaltenvektor logischer 1-Werte (true) für v zurück.

  • Die Indexzeichen für Zeilen und Spalten, row und col, beziehen sich auf die linearen Indizes in k durch k = sub2ind(size(X),row,col).

Erweiterte Fähigkeiten

Versionsverlauf

Eingeführt vor R2006a