Main Content

find

Encontrar índices y valores de elementos distintos a cero

Descripción

ejemplo

k = find(X) devuelve un vector que contiene los índices lineales de cada elemento distinto de cero del arreglo X.

  • Si X es un vector, find devuelve un vector con la misma orientación que X.

  • Si X es un arreglo multidimensional, find devuelve un vector columna de los índices lineales del resultado.

ejemplo

k = find(X,n) devuelve los primeros n índices correspondientes a los elementos distintos de cero de X.

ejemplo

k = find(X,n,direction), donde direction es 'last', encuentra los últimos n índices correspondientes a los elementos distintos de cero de X. El valor predeterminado para direction es 'first', que encuentra los primeros n índices correspondientes a elementos distintos de cero.

ejemplo

[row,col] = find(___) devuelve los subíndices de fila y columna de cada elemento distinto de cero del arreglo X utilizando cualquiera de los argumentos de entrada de las sintaxis anteriores.

ejemplo

[row,col,v] = find(___) también devuelve el vector v, que contiene los elementos distintos de cero de X.

Ejemplos

contraer todo

Encuentre los elementos distintos de cero en una matriz de 3 por 3.

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

Utilice el operador lógico not en X para localizar los ceros.

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

     2
     3
     4
     6

Encuentre los primeros cinco elementos que sean menores de 10 en una matriz del cuadrado mágico de 4 por 4.

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

Vea los correspondientes elementos de X.

X(k)
ans = 5×1

     5
     9
     4
     2
     7

Para encontrar un valor entero específico, utilice el operador ==. Por ejemplo, encuentre los elementos iguales a 13 en un vector de 1 por 10 de enteros impares.

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

     1     3     5     7     9    11    13    15    17    19

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

Para encontrar un valor no entero, utilice un valor de tolerancia basado en sus datos. De lo contrario, el resultado es en ocasiones una matriz vacía a consecuencia del error de redondeo del punto flotante.

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

Cree una matriz del cuadrado mágico de 6 por 6 con todos los elementos con índice impar iguales a cero.

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

Localice los últimos cuatro elementos distintos de cero.

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

    30
    32
    34
    36

Encuentre los primeros tres elementos en una matriz de 4 por 4 que sean mayores que 0 y menores que 10. Especifique dos salidas para devolver los subíndices de fila y columna a los elementos.

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

La primera instancia es X(2,1), que es 8.

Encuentre los elementos distintos de cero en una matriz de 3 por 3. Especifique tres salidas para devolver los subíndices de fila, los subíndices de columnas y los valores de elemento.

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

Encuentre los elementos distintos de cero en un arreglo de 4 por 2 por 3. Especifique dos salidas, row y col, para devolver los subíndices de fila y columna de los elementos distintos de cero. Cuando la entrada es un arreglo multidimensional (N > 2), find devuelve col como un índice lineal en las N-1 dimensiones finales de X.

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

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como escalar, vector, matriz o arreglo multidimensional.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
Soporte de números complejos:

Número de elementos distintos de cero que encontrar, especificados como un escalar entero positivo. De forma predeterminada, find(X,n) busca los primeros n elementos distintos de cero de X.

Dirección de búsqueda, especificada como la cadena 'first' o 'last'. Busque los últimos n elementos distintos de cero de X con find(X,n,'last').

Argumentos de salida

contraer todo

Índices para elementos distintos de cero, devueltos como vector.

  • Si X es un vector fila, k también es un vector fila. De lo contrario, k es un vector columna.

  • k es un vector fila vacío o un vector columna vacío cuando X es un arreglo vacío o no tiene elementos distintos de cero.

  • find usa la convención de que k es una matriz vacía [] cuando X es una matriz vacía [].

Puede devolver los valores distintos de cero de X con X(k).

Subíndices de fila, devueltos como vector. Juntos, row y col especifican los subíndices X(row,col) correspondientes a los elementos distintos de cero de X.

Subíndices de columna, devueltos como vector. Juntos, row y col especifican los subíndices X(row,col) correspondientes a los elementos distintos de cero de X.

Si X es un arreglo multidimensional con N > 2, col es un índice lineal en las N-1 dimensiones finales de X. Ello mantiene la relación X(row(i),col(i)) == v(i).

Elementos distintos de cero de X, devueltos como vector.

Más acerca de

contraer todo

Índices lineales

Un índice lineal permite utilizar un único subíndice para indexar en un arreglo, como A(k). MATLAB® trata el arreglo como un vector columna único con cada columna anexada a la parte inferior de la columna anterior. De esta manera, la indexación lineal numera los elementos de las columnas de arriba a abajo y de izquierda a derecha.

Por ejemplo, considere una matriz de 3 por 3. Puede referirse al elemento A(2,2) con A(5), y al elemento A(2,3) con A(8). El índice lineal cambia en función del tamaño del arreglo; para una matriz de 3 por 3, A(5) devuelve un elemento con localización diferente que para una matriz de 4 por 4.

Las funciones sub2ind y ind2sub son útiles para la conversión entre subíndices e índices lineales.

Sugerencias

  • Para encontrar elementos de arreglo que cumplan una condición, utilice find en combinación con una expresión relacional. Por ejemplo, find(X<5) devuelve los índices lineales para los elementos de X que son menores que 5.

  • Para encontrar directamente los elementos de X que cumplan la condición X<5, utilice X(X<5). Evite las llamadas a funciones como X(find(X<5)), que utilizan innecesariamente find en una matriz lógica.

  • Cuando ejecuta find con una operación relacional como X>1, es importante recordar que el resultado de la operación relacional es una matriz lógica de unos y ceros. Por ejemplo, el comando [row,col,v] = find(X>1) devuelve un vector columna de valores lógicos 1 (true) para v.

  • Los subíndices de fila y columna, row y col, están relacionados con los índices lineales de k mediante k = sub2ind(size(X),row,col).

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a