Ermitteln von Indizes und Werten von Elementen ungleich null
alle in Seite reduzieren
Syntax
k = find(X)
k = find(X,n)
k = find(X,n,direction)
[row,col] = find(___)
[row,col,v] = find(___)
Beschreibung
Beispiel
k = find(X) gibt einen Vektor zurück, der die linearen Indizes jedes Elements ungleich null im Array X enthält.
Wenn
Xein Vektor ist, gibtfindeinen Vektor zurück, der dieselbe Orientierung hat wieX.Wenn
Xein mehrdimensionales Array ist, gibtfindeinen 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
Elemente gleich und ungleich null in einer Matrix
Live Script öffnen
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 4k = find(X)
k = 5×1 1 5 7 8 9Wenden Sie den logischen Operator not auf X an, um die Nullen zu lokalisieren.
k2 = find(~X)
k2 = 4×1 2 3 4 6Elemente, die eine Bedingung erfüllen
Live Script öffnen
Ermitteln Sie in der 4x4-Matrix eines magischen Quadrats die ersten fünf Elemente, die kleiner als 10 sind.
X = magic(4)
k = find(X<10,5)
k = 5×1 2 3 4 5 7Betrachten Sie die entsprechenden Elemente von X.
X(k)
ans = 5×1 5 9 4 2 7Elemente, die gleich bestimmten Werten sind
Live Script öffnen
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 19k = 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.0000k = find(y==0.3)
k = 1x0 empty double row vector
k = find(abs(y-0.3) < 0.001)
k = 4
Bestimmte Anzahl letzter Elemente ungleich null
Live Script öffnen
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 11Suchen Sie nach den letzten vier Elementen ungleich null.
k = find(X,4,'last')k = 4×1 30 32 34 36Elemente, die mehrere Bedingungen erfüllen
Live Script öffnen
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 4col = 3×1 1 1 1Die erste Instanz ist X(2,1), in diesem Fall 8.
Indexzeichen und Werte für Elemente ungleich null
Live Script öffnen
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 3col = 5×1 1 1 2 3 3v = 5×1 3 -5 2 7 1Indexzeichen mehrdimensionaler Arrays
Live Script öffnen
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 0X(:,:,2) = 0 0 0 0 0 0 1 0X(:,:,3) = 0 1 0 0 1 0 0 0
[row,col] = find(X)
row = 4×1 1 4 3 1col = 4×1 1 3 5 6Eingabeargumente
alle reduzieren
X — Eingabearray
Skalar | Vektor | Matrix | mehrdimensionales Array
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
n — Anzahl der zu ermittelnden Elemente ungleich null
positiver ganzzahliger Skalar
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.
direction — Suchrichtung
'first' (Standardeinstellung) | 'last'
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
k — Indizes der Elemente ungleich null
Vektor
Indizes der Elemente ungleich null, zurückgegeben als Vektor.
Wenn es sich bei
Xum einen Zeilenvektor handelt, istkebenfalls ein Zeilenvektor. Anderenfalls istkein Spaltenvektor.kist ein leerer Zeilenvektor oder ein leerer Spaltenvektor, wennXein leeres Array ist oder keine Elemente ungleich null enthält.findverwendet den Grundsatz, dasskeine leere Matrix[]ist, wennXeine leere Matrix[]ist.
Sie können die Werte ungleich null in X mithilfe von X(k) zurückgeben.
row — Indexzeichen für Zeilen
Vektor
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.
col — Indexzeichen für Spalten
Vektor
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.
v — Elemente ungleich null von X
Vektor
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
findin Verbindung mit einem relationalen Ausdruck. Beispielsweise gibtfind(X<5)die linearen Indizes zu den Elementen inXzurück, die kleiner als5sind.Um die Elemente in
X, die die BedingungX<5erfüllen, direkt zu ermitteln, verwenden SieX(X<5). Vermeiden Sie Funktionsaufrufe wieX(find(X<5)), diefindunnötigerweise auf eine logische Matrix anwenden.Wenn Sie
findmit einer relationalen Operation wieX>1ausfü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 logischer1-Werte (true) fürvzurück.Die Indexzeichen für Zeilen und Spalten,
rowundcol, beziehen sich auf die linearen Indizes inkdurchk = sub2ind(size(X),row,col).
Erweiterte Fähigkeiten
Tall Arrays
Rechnen mit Arrays, die mehr Zeilen haben, als in den Speicher passen.
Hinweise zur Verwendung und Einschränkungen:
Xmuss ein Tall-Spaltenvektor sein.
Weitere Informationen finden Sie unter Tall-Arrays.
C/C++ Codegenerierung
Generieren Sie C und C++ Code mit MATLAB® Coder™.
Hinweise zur Verwendung und Einschränkungen:
Ändert sich eine Eingabe variabler Größe zur Laufzeit in einen Zeilenvektor, wird die Codegenerierung mit einem Fehler beendet. Diese Einschränkung gilt nicht, wenn es sich bei der Eingabe um einen Skalar oder um einen Zeilenvektor mit variabler Länge handelt.
Bei Eingaben variabler Größe hängt die Form leerer Ausgaben (0x0, 0x1 oder 1x0) von den oberen Grenzen der Größe der Eingabe ab. Wenn das Eingabearray zur Laufzeit ein Skalar oder [] ist, stimmt die Ausgabe möglicherweise nicht mit MATLAB überein. Ist die Eingabe ein Zeilenvektor variabler Länge, hat eine leere Ausgabe die Größe 1x0. Anderenfalls ist die Größe 0x1.
Der generierte Code gibt immer einen Vektor variabler Länge zurück. Selbst wenn Sie den Ausgabevektor
kangeben, wird die Größe der Ausgabe nicht korrigiert, weil die Ausgabe weniger alskElemente enthalten kann. Beispielsweise gibtfind(x,1)einen Vektor variabler Länge mit einem Element oder null Elementen zurück.
Thread-Based Environment
Führen Sie mithilfe von MATLAB® backgroundPool den Code im Hintergrund aus oder machen Sie den Code mit der Parallel Computing Toolbox™ ThreadPool schneller.
Diese Funktion bietet vollständige Unterstützung für thread-basierte Umgebungen. Weitere Informationen finden Sie unter Run MATLAB Functions in Thread-Based Environment.
GPU-Arrays
Schnellere Codeausführung durch Ausführen auf einer Grafikkarte (GPU) mit der Parallel Computing Toolbox™.
Diese Funktion bietet vollständige Unterstützung für Grafikkarten-Arrays. Weitere Informationen finden Sie unter Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Verteilte Arrays
Partitionieren von großen Arrays über den kombinierten Speicher Ihres Clusters mit Parallel Computing Toolbox™.
Diese Funktion bietet vollständige Unterstützung für verteilte Arrays. Weitere Informationen finden Sie unter Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).
Versionsverlauf
Eingeführt vor R2006a
Siehe auch
ind2sub | nonzeros | strfind | sub2ind | Short-Circuit AND | Short-Circuit OR | ismember
Themen
- Find Array Elements That Meet a Condition
- Array-Indizierung
- Relationale Operationen
- Dünn besetzte Matrizen
MATLAB-Befehl
Sie haben auf einen Link geklickt, der diesem MATLAB-Befehl entspricht:
Führen Sie den Befehl durch Eingabe in das MATLAB-Befehlsfenster aus. Webbrowser unterstützen keine MATLAB-Befehle.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office