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
X
ein Vektor ist, gibtfind
einen Vektor zurück, der dieselbe Orientierung hat wieX
.Wenn
X
ein mehrdimensionales Array ist, gibtfind
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
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 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
Elemente, 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)
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
Elemente, 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 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
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 11
Suchen Sie nach den letzten vier Elementen ungleich null.
k = find(X,4,'last')
k = 4×1 30 32 34 36
Elemente, 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 4
col = 3×1 1 1 1
Die 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 3
col = 5×1 1 1 2 3 3
v = 5×1 3 -5 2 7 1
Indexzeichen 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 1
col = 4×1 1 3 5 6
Eingabeargumente
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
X
um einen Zeilenvektor handelt, istk
ebenfalls ein Zeilenvektor. Anderenfalls istk
ein Spaltenvektor.k
ist ein leerer Zeilenvektor oder ein leerer Spaltenvektor, wennX
ein leeres Array ist oder keine Elemente ungleich null enthält.find
verwendet den Grundsatz, dassk
eine leere Matrix[]
ist, wennX
eine 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
find
in Verbindung mit einem relationalen Ausdruck. Beispielsweise gibtfind(X<5)
die linearen Indizes zu den Elementen inX
zurück, die kleiner als5
sind.Um die Elemente in
X
, die die BedingungX<5
erfüllen, direkt zu ermitteln, verwenden SieX(X<5)
. Vermeiden Sie Funktionsaufrufe wieX(find(X<5))
, diefind
unnötigerweise auf eine logische Matrix anwenden.Wenn Sie
find
mit einer relationalen Operation wieX>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 logischer1
-Werte (true
) fürv
zurück.Die Indexzeichen für Zeilen und Spalten,
row
undcol
, beziehen sich auf die linearen Indizes ink
durchk = 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:
X
muss 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
k
angeben, wird die Größe der Ausgabe nicht korrigiert, weil die Ausgabe weniger alsk
Elemente 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