C贸mo encontrar un valor en un array en Octave
En esta guía, te explicaré cómo buscar y encontrar datos en un array usando la función find() de Octave.
find(X,N,D)
La función find() tiene tres parámetros:
- X
El primer parámetro, X, es el array donde realizar la búsqueda. Es un parámetro obligatorio. - N
Es el número máximo de elementos que deseas obtener de la búsqueda. La búsqueda se detiene después de N resultados. - D
Es la dirección de la búsqueda. Puedes ingresar "first" para buscar desde el primer hasta el último elemento o "last" para buscar desde el último hasta el primer elemento del índice. Por defecto es "first".
Esta función extrae los índices de los elementos que coinciden con la búsqueda en el array.
Nota. La función find() devuelve los índices de los arrays en orden ascendente. No en orden de extracción.
Te daré un ejemplo práctico.
Crea un array y asígnalo a la variable V
>> V = [ 1 0 2 0 4 0 4 ]
V =
1 0 2 0 4 0 4
Hay siete elementos en el array
No olvides que el primer elemento de un array tiene índice cero en Octave

Escribe find(V) para encontrar los elementos no nulos
>> find(V)
ans =
1 3 5 7
La función find() muestra la posición del índice de los elementos del array con valores distintos de cero, es decir, V[1], V[3], V[5] y V[7].

Los resultados son las posiciones de los elementos en el índice del array. No son los valores de los elementos.
Nota. La función find() devuelve los mismos resultados incluso cuando el array está dispuesto en una columna. la función find()

Escribe find(V,1) para obtener solo un resultado de la búsqueda.
>> find(V,1)
ans = 1
La función devuelve la posición del primer elemento no nulo en el array, es decir, V[1]

Ahora, escribe find(V,1,"last") para buscar de derecha a izquierda.
>> find(V,1,"last")
ans = 7
El resultado es el elemento V[7] porque es el primero con valor distinto de cero V[7]=4 comenzando desde la derecha.

Si quieres encontrar elementos iguales a cero, escribe una negación antes del nombre del array.
Escribe find(~V)
>> find(~V)
ans =
2 4 6
La búsqueda extrae las posiciones en el índice de los elementos con valor igual a cero.
Los resultados son V[2], V[4] y V[6].

Escribe find(V>2) para encontrar solo los elementos del array con valores mayores a dos
>> find(V>2)
ans =
5 7
La función encuentra los elementos V[5] y V[7] del array

Cuando la búsqueda no produce resultados, la función find() devuelve un conjunto vacío.
Por ejemplo, si escribes find(V>5), el resultado es un array vacío.
>> find(V>5)
ans = [ ](1x0)
Escribe find(V<=3 & V>=1) para buscar elementos del array con valor entre 1 y 3
>> find(V<=3 & V>=1)
ans =
1 3
La búsqueda extrae los elementos V[1] y V[3] del array

¿Cómo realizar una búsqueda en un array multidimensional?
Cuando el array es multidimensional (por ejemplo, una matriz), la función find busca los datos columna por columna.
Por ejemplo, crea una matriz con tres filas y tres columnas.
>> M=[1 0 1; 0 1 0; 1 0 1]
M =
1 0 1
0 1 0
1 0 1
El array es un array bidimensional
$$ \begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix} $$
Escribe find(M) para buscar elementos con valor distinto de cero
>> find(M)
ans =
1
3
5
7
9
La función devuelve las posiciones de los elementos en el índice como si el array fuera unidimensional, iterando los elementos en columna.
Por ejemplo, los índices 1 y 3 son los dos primeros elementos no nulos encontrados en la primera columna.

El índice 5 es el elemento no nulo en la segunda columna.
Es el quinto elemento analizado por la investigación.

Los índices 7 y 9 son los elementos no nulos en la tercera columna.
Son respectivamente el séptimo y noveno elemento en la secuencia de elementos analizados por la búsqueda.

Si deseas obtener como resultado las coordenadas (fila; columna) de los elementos en la matriz, debes usar otro comando.
Escribe [row,col,v]=find(M)
>> [row,col]=find(M)
row =
1
3
2
1
3
col =
1
1
2
3
3
v =
1
1
1
1
1
En este caso, la función extrae tres arrays:
- el primer array (row) contiene los números de fila
- el segundo array (col) contiene los números de columna
- el tercer array (v) contiene los valores de los elementos
Por ejemplo, para mostrar las coordenadas del primer resultado de búsqueda, escribe row(1), col(1)
>> row(1),col(1)
ans = 1
ans = 1
El primer elemento no nulo de la matriz se encuentra en las coordenadas (1,1), es decir, en la primera fila y primera columna de la matriz.

Para ver las coordenadas del segundo resultado, escribe row(2),col(2)
>> row(2),col(2)
ans = 3
ans = 1
El segundo elemento con valor distinto de cero se encuentra en las coordenadas (3,1), es decir, en la tercera fila y primera columna de la matriz.

De esta manera, puedes obtener la posición exacta de los elementos en el array.