Búsqueda de un valor en un array

En esta guía, les explicaré cómo buscar un valor en un array de MATLAB utilizando la función find().

find(X,N,D)

La función tiene tres parámetros:

  • X
    El parámetro X es un array y es un parámetro obligatorio.
  • N
    El parámetro N es un entero que indica el número máximo de elementos a encontrar. La búsqueda se detiene cuando se alcanza este número.
  • D
    El parámetro D es la dirección de la búsqueda. Puede ser "first" para empezar la búsqueda desde el primer elemento del índice, o "last" para iniciarla desde el último elemento.

La función devuelve los índices de los elementos en el array que satisfacen la búsqueda.

Nota. Los índices de los arrays siempre están ordenados de forma ascendente, incluso cuando la búsqueda comienza desde el último elemento.

Les mostraré un ejemplo práctico.

Crear un array unidimensional.

>> V = [ 1 0 2 0 4 0 4 ]
V =
1 0 2 0 4 0 4

Este array tiene siete elementos.

En MATLAB, el índice de los elementos en un array comienza desde uno.

Los índices de los elementos en el array

Ingrese find(V) para encontrar los elementos no nulos.

>> find(V)
ans =
1 3 5 7

La función devuelve las posiciones donde se encuentran los elementos no nulos, es decir, V[1], V[3], V[5] y V[7].

El resultado de la búsqueda.

Nota. Lo mismo aplica incluso si el array está dispuesto en filas en lugar de columnas. La función find() devuelve las posiciones en el índice.
ejemplo de la función find()

Para encontrar solo el primer elemento que satisface la condición, ingrese 1 como segundo parámetro.

Ingrese find(V,1)

>> find(V,1)
ans = 1

La función devuelve el índice del primer elemento no nulo en el array, es decir, V[1].

El resultado de la búsqueda.

Para buscar elementos empezando desde el último, indique "last" como tercer parámetro.

Ingrese find(V,1,"last")

>> find(V,1,"last")
ans = 7

En este caso, la dirección de búsqueda es de derecha a izquierda.

El primer elemento que satisface la condición es V[7].

El resultado de la búsqueda.

Para buscar elementos iguales a cero, ponga una negación delante del nombre del array.

Ingrese find(~V)

>> find(~V)
ans =
2 4 6

La función devuelve las posiciones donde los elementos en el array son iguales a cero, es decir, V[2], V[4] y V[6].

El resultado de la búsqueda.

Para identificar solo los elementos en el array que son mayores de dos, ingrese find(V>2)

>> find(V>2)
ans =
5 7

La función devuelve los elementos V[5] y V[7] del array.

El resultado de la búsqueda.

Si la búsqueda no selecciona ningún elemento en el array, el resultado es un conjunto vacío.

Por ejemplo, ingrese find(V>5) para buscar elementos mayores de 5.

El resultado es un array vacío porque el valor más grande en el array es 4.

>> find(V>5)
ans =
1×0 vector de fila doble vacío

Para buscar elementos en el array con valores entre 1 y 3, ingrese find(V<=3 & V>=1)

>> find(V<=3 & V>=1)
ans =
1 3

Los elementos que satisfacen la condición son V[1] y V[3].

El resultado de la búsqueda.

¿Qué pasa con los arrays multidimensionales?

Cuando se trata de arrays multidimensionales, como las matrices, la función find busca a través de las columnas una por una, comenzando desde la primera columna.

Por ejemplo, creemos una matriz de 3x3

>> M=[1 0 1; 0 1 0; 1 0 1]
M =
1 0 1
0 1 0
1 0 1

Esta matriz tiene dos dimensiones con tres filas y tres columnas

$$ \begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix} $$

Para encontrar los índices de los elementos no nulos, puede escribir find(M)

>> find(M)
ans =
1
3
5
7
9

Los índices 1 y 3 se corresponden con los primeros dos elementos no nulos en la primera columna.

los primeros dos elementos

El índice 5 se refiere al elemento no nulo en la segunda columna, que es el quinto elemento de la secuencia.

el quinto elemento de la secuencia

Los índices 7 y 9 se corresponden con los elementos no nulos en la tercera columna, que son los elementos séptimo y noveno de la secuencia.

los elementos en las posiciones 7 y 9

En esencia, la función find() devuelve la posición de los elementos en la matriz como si fueran parte de un solo vector.

Para obtener la posición de los elementos en la matriz con coordenadas de fila y columna, puedes escribir [fila,columna,v]=find(M)

>> [fila,columna]=find(M)
fila =
1
3
2
1
3

columna =
1
1
2
3
3

v =
1
1
1
1
1

La función extrae tres arreglos, fila y columna, que contienen las coordenadas de fila y columna de los elementos, respectivamente. Otro arreglo, v, contiene los valores.

Para ver las coordenadas del primer elemento seleccionado, puedes escribir fila(1),columna(1)

>> fila(1),columna(1)
respuesta = 1
respuesta = 1

El primer elemento se encuentra en las coordenadas (1,1) en la primera fila y primera columna.

el primer elemento

Para ver las coordenadas del segundo elemento seleccionado, puedes escribir fila(2), columna(2)

>> fila(2),columna(2)
respuesta = 3
respuesta = 1

El segundo elemento se encuentra en las coordenadas (3,1) en la tercera fila y primera columna.

el segundo elemento

De esta manera, puedes determinar con precisión la posición de los elementos en la matriz.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin

Matlab arrays

Vectores

Matrices

Estructura y Arreglo de Celdas