MATLAB itera por meio do array
- Iterar por meio de um array usando indexação linear no MATLAB
-
Iterar por meio de um array usando a função
arrayfun()
no MATLAB -
Iterar por meio de um array usando a função
cellfun()
no MATLAB
Este tutorial irá discutir como iterar através de um array usando a indexação linear, função arrayfun()
e cellfun()
no MATLAB.
Iterar por meio de um array usando indexação linear no MATLAB
Em um array, existem dois tipos de indexação; uma é a indexação de linha e coluna na qual temos que dar o número da linha e da coluna para acessar um elemento presente na matriz, a segunda é a indexação linear na qual podemos acessar um elemento usando apenas seu índice linear. Por exemplo, veja o código abaixo.
m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)
Resultado:
m =
2 6 1
17 19 18
row_col_index =
18
linear_index =
18
No código acima, acessamos o último elemento do array usando os dois tipos de indexação. Na indexação linear, os elementos estão presentes na matriz a partir da primeira coluna. Portanto, se você contar a partir da primeira coluna, o último elemento estará presente no sexto índice. Para iterar um array usando indexação de linha e coluna, você precisa de dois loops, mas no caso da indexação linear, você só precisa de um loop. Por exemplo, vamos iterar por meio de um array usando indexação linear. Veja o código abaixo.
m = [2 6 1; 17 19 18];
for i = 1:numel(m)
disp(m(i))
end
Resultado:
2
17
6
19
1
18
Acima, usamos a função numel()
para obter o número total de elementos presentes na matriz fornecida. E usando um loop e indexação linear, exibimos cada elemento um por um na janela de comando. Observe a sequência pela qual os elementos são exibidos na janela de comando, e esta é a sequência da indexação linear.
Iterar por meio de um array usando a função arrayfun()
no MATLAB
Se você tem uma função e deseja aplicá-la a cada elemento do array ou matriz, uma maneira de fazer isso é iterar por meio de cada elemento conforme descrito acima e aplicar a função em cada elemento, mas há outro método fácil em que você pode usar o arrayfun()
para aplicar a função dada a cada elemento do array ou matriz. Veja o código abaixo.
output = arrayfun(myFunction , array);
No código acima, o arrayfun()
aplicou a função armazenada em myFunction
a cada elemento do array um por um e armazenou o resultado na variável output
. Por exemplo, vamos aplicar uma função definida a cada elemento de um array. Veja o código abaixo.
myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)
Resultado:
myMatrix =
0 90
180 270
output =
1.0000 -0.4481
-0.5985 0.9844
Como você pode ver na saída, a função cos(x)
é aplicada a cada elemento do array e o resultado é armazenado na variável output
. Verifique este link para obter mais informações sobre o arrayfun()
.
Iterar por meio de um array usando a função cellfun()
no MATLAB
Se você tem uma função e deseja aplicá-la a cada elemento de uma determinada célula, uma maneira de fazer isso é iterar em cada elemento conforme descrito acima e aplicar a função em cada elemento, mas há outro método fácil em que você pode use o cellfun()
para aplicar a função dada a cada elemento da célula. Veja o código abaixo.
output = cellfun(myFunction , myCell);
No código acima, o cellfun()
aplicou a função armazenada em myFunction
a cada elemento da célula um por um e armazenou o resultado na variável output
. Por exemplo, vamos aplicar uma função definida a cada elemento de uma célula. Veja o código abaixo.
myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)
Resultado:
myCell =
1×4 cell array
{[0]} {[90]} {[180]} {[270]}
output =
0 0.8940 -0.8012 -0.1760
Como você pode ver na saída, a função sin(x)
é aplicada a cada elemento da célula e o resultado é armazenado na variável output
. Verifique este link para obter mais informações sobre o cellfun()
.