HOWTO · MATLAB

MATLAB itera por meio do array

Pode-se iterar por meio de um array usando a indexação linear, arrayfun() e 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().