HOWTO · MATLAB

MATLAB Itera attraverso Matrix

Si può scorrere una matrice utilizzando l'indicizzazione lineare, la funzione arrayfun() e cellfun() in MATLAB.

Questo tutorial discuterà come iterare attraverso una matrice usando l’indicizzazione lineare, arrayfun() e la funzione cellfun() in MATLAB.

Iterare attraverso una matrice utilizzando l’indicizzazione lineare in MATLAB

In una matrice ci sono due tipi di indicizzazione; uno è l’indicizzazione di riga e colonna in cui dobbiamo dare il numero di riga e colonna per accedere a un elemento presente nella matrice, il secondo è l’indicizzazione lineare in cui possiamo accedere a un elemento utilizzando solo il suo indice lineare. Ad esempio, vedere il codice qui sotto.

m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)

Produzione:

m =

     2     6     1
    17    19    18


row_col_index =

    18


linear_index =

    18

Nel codice sopra, accediamo all’ultimo elemento della matrice utilizzando entrambi i tipi di indicizzazione. Nell’indicizzazione lineare, gli elementi sono presenti nella matrice a partire dalla prima colonna. Quindi se conti dalla prima colonna, l’ultimo elemento è presente al sesto indice. Per eseguire l’iterazione di una matrice utilizzando l’indicizzazione di riga e colonna, sono necessari due cicli, ma nel caso dell’indicizzazione lineare, è necessario solo un bucle. Ad esempio, iteriamo su una matrice utilizzando l’indicizzazione lineare. Vedi il codice qui sotto.

m = [2 6 1; 17 19 18];
for i = 1:numel(m)
    disp(m(i))
end

Produzione:

     2

    17

     6

    19

     1

    18

In quanto sopra, abbiamo usato la funzione numel() per ottenere il numero totale di elementi presenti nella matrice data. E utilizzando un bucle e un’indicizzazione lineare, abbiamo visualizzato ogni elemento uno per uno nella finestra di comando. Notare la sequenza con cui gli elementi vengono visualizzati nella finestra di comando, e questa è la sequenza dell’indicizzazione lineare.

Iterare attraverso una matrice usando la funzione arrayfun() in MATLAB

Se si dispone di una funzione e si desidera applicarla a ciascun elemento dell’array o della matrice, un modo per farlo è scorrere ogni elemento come descritto sopra e applicare la funzione su ciascun elemento, ma esiste un altro metodo semplice in cui si può usare arrayfun() per applicare la funzione data a ciascun elemento dell’array o della matrice. Vedi il codice qui sotto.

output = arrayfun(myFunction , array);

Nel codice sopra, l’arrayfun() ha applicato la funzione memorizzata in myFunction a ciascun elemento dell’array uno per uno e memorizza il risultato nella variabile output. Ad esempio, applichiamo una funzione definita a ciascun elemento di una matrice. Vedi il codice qui sotto.

myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)

Produzione:

myMatrix =

     0    90
   180   270


output =

    1.0000   -0.4481
   -0.5985    0.9844

Come si può vedere dall’output, la funzione cos(x) viene applicata a ciascun elemento della matrice e il risultato viene memorizzato nella variabile output. Controlla questo link per ulteriori informazioni su arrayfun().

Iterare attraverso una matrice usando la funzione cellfun() in MATLAB

Se hai una funzione e vuoi applicarla a ogni elemento di una data cella, un modo per farlo è scorrere ogni elemento come descritto sopra e applicare la funzione su ogni elemento, ma c’è un altro metodo semplice in cui puoi usa il cellfun() per applicare la funzione data a ciascun elemento della cella. Vedi il codice qui sotto.

output = cellfun(myFunction , myCell);

Nel codice sopra, il cellfun() ha applicato la funzione memorizzata in myFunction a ciascun elemento della cella uno per uno e memorizza il risultato nella variabile output. Ad esempio, applichiamo una funzione definita a ciascun elemento di una cella. Vedi il codice qui sotto.

myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)

Produzione:

myCell =

  1×4 cell array

    {[0]}    {[90]}    {[180]}    {[270]}


output =

         0    0.8940   -0.8012   -0.1760

Come si può vedere dall’output, la funzione sin(x) viene applicata a ciascun elemento della cella e il risultato viene memorizzato nella variabile output. Controlla questo link per ulteriori informazioni su cellfun().