Contenido principal

find

Encontrar índices y valores de elementos distintos a cero

Descripción

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.

ejemplo

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 =

  1×0 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

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

expandir todo

Historial de versiones

Introducido antes de R2006a