MATLAB itera por meio do array

Ammar Ali 30 janeiro 2023
  1. Iterar por meio de um array usando indexação linear no MATLAB
  2. Iterar por meio de um array usando a função arrayfun() no MATLAB
  3. Iterar por meio de um array usando a função cellfun() no MATLAB
MATLAB itera por meio do array

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().

Autor: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Artigo relacionado - MATLAB Matrix