Encontre o Índice de Valor em Matriz no Matlab
Este tutorial irá discutir a localização do índice de um valor em um array usando a função find()
no MATLAB.
Encontre o índice de valor na matriz usando a função find()
no MATLAB
Em um array, os elementos são colocados em certos índices começando em 1 e assim por diante. Para encontrar o índice de um valor em um determinado array, podemos usar a função find()
. A função find()
é usada para encontrar índices e valores de elementos em um array ou matriz. Para encontrar índices de elementos, precisamos definir uma condição dentro da função find()
. Por exemplo, se quisermos encontrar o índice de um único elemento, podemos usar o operador igual dentro da função find()
. Se o mesmo elemento estiver presente em índices diferentes, a função find()
retornará todos os índices onde o elemento está presente. Podemos usar todos os tipos de declarações condicionais dentro desta função. Por exemplo, suponha que desejamos encontrar índices de todos os elementos maiores que um certo número. Nesse caso, podemos usar o operador maior que, e ele retornará os índices de todos os elementos maiores do que aquele número específico. Por exemplo, vamos encontrar o índice de um único elemento presente em um determinado array. Veja o código abaixo.
mat = [2 3 1 2];
indices = find(mat==2)
Resultado:
indices =
1 4
Os índices das variáveis contêm dois valores na saída acima, o que significa que o elemento está presente nos índices 1 e 4 dentro do array ou vetor. Agora vamos considerar, queremos encontrar os índices dos elementos que são maiores que 1. Precisamos mudar a condição dentro da função find()
. Em vez de usar o operador igual, usaremos o operador maior que. Veja o código abaixo.
mat = [2 3 1 2];
indices = find(mat>1)
Resultado:
indices =
1 2 4
Na saída acima, os índices das variáveis contêm três valores e, como você pode ver, três elementos são maiores do que um dentro de uma determinada matriz ou vetor. Se temos um array e queremos encontrar a posição de um elemento dentro do vetor, podemos usar a função find()
. Sabemos que o elemento dentro de um array é colocado em uma certa linha e coluna, e para encontrar essa linha e coluna específicas, podemos usar a função find()
. Se o elemento estiver presente em várias posições, a função find()
retornará vários valores para linha e coluna. Veja o código abaixo.
mat = [2 3 ; 2 1]
[row, col] = find(mat==2)
Resultado:
mat =
2 3
2 1
row =
1
2
col =
1
1
Na saída acima, a matriz tem duas linhas e duas colunas, o primeiro valor do vetor linha e coluna é a primeira posição do elemento, que é a 1ª linha e a 1ª coluna, e o segundo valor da linha e coluna é o segunda posição do elemento que é a 2ª linha e a 1ª coluna. Se você quiser encontrar os índices do elemento 2 na matriz fornecida, a função find()
retornará 1 e 2 porque os valores são colocados em colunas no caso do array. Isso significa que o valor 2 está no índice 1 e 2 e o valor 3 está no índice 3 e o valor 1 está no índice 4. Portanto, se em vez de duas variáveis de saída, você passar apenas uma variável, a função find()
retornará os índices em colunas. Por exemplo, vamos encontrar os índices do elemento e substituí-los por outro valor. Veja o código abaixo.
mat = [2 3 ; 2 1]
indices = find(mat==2)
mat(indices) = 5
Resultado:
mat =
2 3
2 1
indices =
1
2
mat =
5 3
5 1
No código acima, primeiro encontramos os índices do elemento dois e depois substituímos o valor por 5 usando os índices e, como você pode ver, os valores do array foram alterados. Se você não quiser usar a função find()
por algum motivo, você sempre pode fazer sua função usando um loop for e uma instrução if. Você precisa percorrer todos os elementos do array ou matriz e, usando a instrução if, pode verificar se o valor atual corresponde ao valor desejado ou não. Se corresponder ao valor desejado, você pode salvar seu índice e prosseguir até verificar todos os elementos presentes no array. Por exemplo, vamos usar um loop for e uma instrução if para encontrar os índices de um vetor ou array. Veja o código abaixo.
mat = [2 3 2 1]
indices = [];
for i=1:length(mat)
if(mat(i) == 2)
indices = [indices i];
end
end
indices
Resultado:
mat =
2 3 2 1
indices =
1 3
No código acima, inicializamos os índices das variáveis com um vetor vazio. Quando o valor dois corresponder a qualquer elemento dentro do array, salvaremos esse índice na variável indices
.