Como encontrar um valor em uma matriz no Octave

Neste guia, vou explicar como procurar e encontrar dados em uma matriz usando a função find() no Octave.

find(X,N,D)

A função find() tem três parâmetros:

  • X
    O primeiro parâmetro X é a matriz onde procurar. É um parâmetro obrigatório.
  • N
    É o número máximo de itens que você deseja obter da pesquisa. A pesquisa para após N resultados.
  • D
    É a direção da pesquisa. Você pode digitar "first" para pesquisar do primeiro ao último elemento ou "last" para pesquisar do último ao primeiro elemento do índice. Por padrão, é "first".

Esta função extrai os índices dos elementos que correspondem à pesquisa na matriz.

Nota. A função find() retorna os índices das matrizes em ordem crescente. Não na ordem de extração.

Vou dar um exemplo prático.

Crie uma matriz e atribua-a à variável V

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

Há sete elementos na matriz

Não se esqueça de que o primeiro elemento de uma matriz tem índice zero no Octave

índice dos elementos da matriz

Digite find(V) para encontrar os elementos não nulos

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

A função find() exibe a posição do índice dos elementos da matriz com valores diferentes de zero, ou seja, V[1], V[3], V[5] e V[7].

o resultado da pesquisa

Os resultados são as posições dos elementos no índice da matriz. Eles não são os valores dos elementos.

Nota. A função find() retorna os mesmos resultados mesmo quando a matriz está disposta em uma coluna. a função find()
find()

Digite find(V,1) para obter apenas um resultado da pesquisa.

>> find(V,1)
ans = 1

A função retorna a posição do primeiro elemento não nulo na matriz, ou seja, V[1]

o resultado da pesquisa

Agora, digite find(V,1,"last") para pesquisar da direita para a esquerda.

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

O resultado é o elemento V[7] porque é o primeiro com valor não nulo V[7]=4 começando pela direita.

o resultado da pesquisa

Se você quiser encontrar elementos iguais a zero, digite uma negação antes do nome da matriz.

Digite find(~V)

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

A pesquisa extrai as posições no índice dos elementos com valor igual a zero.

Os resultados são V[2], V[4] e V[6].

o resultado da pesquisa

Digite find(V>2) para encontrar apenas os elementos da matriz com valores maiores que dois

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

A função encontra os elementos V[5] e V[7] da matriz

o resultado da pesquisa

Quando a pesquisa não produz resultados, a função find() retorna um conjunto vazio.

Por exemplo, se você digitar find(V>5), o resultado será uma matriz vazia.

>> find(V>5)
ans = [ ](1x0)

Digite find(V<=3 & V>=1) para procurar elementos da matriz com valor entre 1 e 3

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

A pesquisa extrai os elementos V[1] e V[3] da matriz

o resultado da pesquisa

Como fazer uma pesquisa em uma matriz multidimensional?

Quando a matriz é multidimensional (por exemplo, uma matriz), a função find procura os dados coluna por coluna.

Por exemplo, crie uma matriz com três linhas e três colunas.

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

A matriz é uma matriz bidimensional

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

Digite find(M) para pesquisar elementos com valor diferente de zero

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

A função retorna as posições dos elementos no índice como se a matriz fosse unidimensional, iterando os elementos em coluna.

Por exemplo, os índices 1 e 3 são os dois primeiros elementos não nulos encontrados na primeira coluna.

os dois primeiros elementos

O índice 5 é o elemento não nulo na segunda coluna.

É o quinto elemento analisado pela pesquisa.

o quinto elemento da série

Os índices 7 e 9 são os elementos não nulos na terceira coluna.

Eles são, respectivamente, o sétimo e o nono elemento na sequência de elementos analisados pela pesquisa.

os elementos nas posições 7 e 9

Se você quiser obter como resultado as coordenadas (linha; coluna) dos elementos na matriz, você precisa usar outro comando.

Digite [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

Neste caso, a função extrai três matrizes:

  • a primeira matriz (row) contém os números das linhas
  • a segunda matriz (col) contém os números das colunas
  • a terceira matriz (v) contém os valores dos elementos

Por exemplo, para exibir as coordenadas do primeiro resultado da pesquisa, digite row(1), col(1)

>> row(1),col(1)
ans = 1
ans = 1

O primeiro elemento não nulo da matriz é encontrado nas coordenadas (1,1), ou seja, na primeira linha e primeira coluna da matriz.

o primeiro elemento

Para ver as coordenadas do segundo resultado, digite row(2), col(2)

>> row(2),col(2)
ans = 3
ans = 1

O segundo elemento com valor diferente de zero é encontrado nas coordenadas (3,1), ou seja, na terceira linha e primeira coluna da matriz.

o segundo elemento

Desta forma, você pode obter a posição exata dos elementos na matriz.

 
 

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

FacebookTwitterLinkedinLinkedin

Arrays em Octave

Vetor

Matriz

Struct e Cell array