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.

Os índices dos elementos no array

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].

O resultado da busca.

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.
exemplo da função find()

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].

O resultado da busca.

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].

O resultado da busca.

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].

O resultado da busca.

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.

O resultado da busca.

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].

O resultado da busca.

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.

os primeiros dois elementos

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

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.

os elementos nas posições 7 e 9

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.

o primeiro elemento

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.

o segundo elemento

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

 
 

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

FacebookTwitterLinkedinLinkedin

Matlab arrays

Vetores

Matrizes

Struct e Cell Array