Ermitteln von Indizes und Werten von Elementen ungleich null (2024)

Table of Contents
Syntax Beschreibung Beispiele Elemente gleich und ungleich null in einer Matrix Elemente, die eine Bedingung erfüllen Elemente, die gleich bestimmten Werten sind Bestimmte Anzahl letzter Elemente ungleich null Elemente, die mehrere Bedingungen erfüllen Indexzeichen und Werte für Elemente ungleich null Indexzeichen mehrdimensionaler Arrays Eingabeargumente X — Eingabearray Skalar | Vektor | Matrix | mehrdimensionales Array n — Anzahl der zu ermittelnden Elemente ungleich null positiver ganzzahliger Skalar direction — Suchrichtung 'first' (Standardeinstellung) | 'last' Ausgabeargumente k — Indizes der Elemente ungleich null Vektor row — Indexzeichen für Zeilen Vektor col — Indexzeichen für Spalten Vektor v — Elemente ungleich null von X Vektor Mehr über Lineare Indizes Tipps Erweiterte Fähigkeiten Tall ArraysRechnen mit Arrays, die mehr Zeilen haben, als in den Speicher passen. C/C++ CodegenerierungGenerieren Sie C und C++ Code mit MATLAB® Coder™. 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. GPU-ArraysSchnellere Codeausführung durch Ausführen auf einer Grafikkarte (GPU) mit der Parallel Computing Toolbox™. Verteilte ArraysPartitionieren von großen Arrays über den kombinierten Speicher Ihres Clusters mit Parallel Computing Toolbox™. Versionsverlauf Siehe auch Themen MATLAB-Befehl Americas Europe Asia Pacific

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, 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

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)
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

XEingabearray
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

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

directionSuchrichtung
'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, 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.

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

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

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.

Ermitteln von Indizes und Werten von Elementen ungleich null (1)

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)

Asia Pacific

  • Australia (English)
  • India (English)
  • New Zealand (English)
  • 中国
  • 日本 (日本語)
  • 한국 (한국어)

Contact your local office

Ermitteln von Indizes und Werten von Elementen ungleich null (2024)
Top Articles
Latest Posts
Article information

Author: Terence Hammes MD

Last Updated:

Views: 5977

Rating: 4.9 / 5 (69 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Terence Hammes MD

Birthday: 1992-04-11

Address: Suite 408 9446 Mercy Mews, West Roxie, CT 04904

Phone: +50312511349175

Job: Product Consulting Liaison

Hobby: Jogging, Motor sports, Nordic skating, Jigsaw puzzles, Bird watching, Nordic skating, Sculpting

Introduction: My name is Terence Hammes MD, I am a inexpensive, energetic, jolly, faithful, cheerful, proud, rich person who loves writing and wants to share my knowledge and understanding with you.