Busca de um valor em um array
Neste guia, explicarei como buscar um valor em um array MATLAB usando a função find().
find(X,N,D)
Esta função possui três parâmetros:
- X
O parâmetro X é um array e é obrigatório. - N
O parâmetro N é um inteiro que indica o número máximo de elementos a serem encontrados. A busca termina quando esse número é atingido. - D
O parâmetro D é a direção da busca. Pode ser "primeiro" para iniciar a busca pelo primeiro elemento do índice, ou "último" para começar pelo último elemento.
A função retorna os índices dos elementos no array que satisfazem a busca.
Nota. Os índices dos arrays são sempre ordenados em ordem ascendente, mesmo quando a busca começa pelo último elemento.
Vamos a um exemplo prático.
Crie um array unidimensional.
>> V = [ 1 0 2 0 4 0 4 ]
V =
1 0 2 0 4 0 4
Este array tem sete elementos.
Em MATLAB, o índice dos elementos de um array começa a partir de um.

Digite find(V) para encontrar os elementos não nulos.
>> find(V)
ans =
1 3 5 7
A função retorna as posições onde estão localizados os elementos não nulos, ou seja, V[1], V[3], V[5] e V[7].

Nota. O mesmo se aplica mesmo que o array esteja organizado em linhas ao invés de colunas. A função find() retorna as posições no índice.

Para encontrar apenas o primeiro elemento que satisfaz a condição, digite 1 como segundo parâmetro.
Digite find(V,1)
>> find(V,1)
ans = 1
A função retorna o índice do primeiro elemento não nulo no array, ou seja, V[1].

Para buscar elementos começando pelo último, indique "último" como terceiro parâmetro.
Digite find(V,1,"último")
>> find(V,1,"último")
ans = 7
Neste caso, a direção da busca é da direita para a esquerda.
O primeiro elemento que satisfaz a condição é V[7].

Para buscar elementos iguais a zero, coloque uma negação na frente do nome do array.
Digite find(~V)
>> find(~V)
ans =
2 4 6
A função retorna as posições onde os elementos no array são iguais a zero, ou seja, V[2], V[4] e V[6].

Para identificar apenas os elementos do array que são maiores que dois, digite find(V>2)
>> find(V>2)
ans =
5 7
A função retorna os elementos V[5] e V[7] do array.

Se a busca não selecionar nenhum elemento no array, o resultado é um conjunto vazio.
Por exemplo, digite find(V>5) para buscar elementos maiores que 5.
O resultado é um array vazio porque o maior valor no array é 4.
>> find(V>5)
ans =
1×0 vetor linha vazio duplo
Para buscar elementos no array com valores entre 1 e 3, digite find(V<=3 & V>=1)
>> find(V<=3 & V>=1)
ans =
1 3
Os elementos que satisfazem a condição são V[1] e V[3].

E quanto a arrays multidimensionais?
Ao lidar com arrays multidimensionais, como matrizes, a função find busca pelas colunas uma de cada vez, começando pela primeira coluna.
Por exemplo, vamos criar uma matriz 3x3
>> M=[1 0 1; 0 1 0; 1 0 1]
M =
1 0 1
0 1 0
1 0 1
Esta matriz tem duas dimensões com três linhas e três colunas
$$ \begin{pmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix} $$
Para encontrar os índices dos elementos não nulos, você pode digitar find(M)
>> find(M)
ans =
1
3
5
7
9
Os índices 1 e 3 correspondem aos primeiros dois elementos não nulos na primeira coluna.

O índice 5 corresponde ao elemento não nulo na segunda coluna, que é o quinto elemento na sequência.

Os índices 7 e 9 correspondem aos elementos não nulos na terceira coluna, que são os sétimo e nono elementos na sequência.

Em essência, a função find() retorna a posição dos elementos na matriz como se fizessem parte de um único vetor.
Para obter a posição dos elementos na matriz com coordenadas de linha e coluna, pode-se digitar [linha, coluna, v]=find(M)
>> [linha, coluna]=find(M)
linha =
1
3
2
1
3
coluna =
1
1
2
3
3
v =
1
1
1
1
1
A função extrai três matrizes, linha e coluna, que contêm as coordenadas de linha e coluna dos elementos, respectivamente. Outra matriz, v, contém os valores.
Para visualizar as coordenadas do primeiro elemento selecionado, pode-se digitar linha(1),coluna(1)
>> linha(1),coluna(1)
ans = 1
ans = 1
O primeiro elemento está localizado nas coordenadas (1,1) na primeira linha e primeira coluna.

Para visualizar as coordenadas do segundo elemento selecionado, pode-se digitar linha(2), coluna(2)
>> linha(2),coluna(2)
ans = 3
ans = 1
O segundo elemento está localizado nas coordenadas (3,1) na terceira linha e primeira coluna.

Assim, é possível determinar com precisão a posição dos elementos na matriz.