Tag Archives: tutorial matlab

Operatore due punti in Matlab

MATLAB

L’operatore : (due punti)
L’operatore due punti rappresenta uno dei più importanti operatori di MATLAB. Si trova in molte forme diverse. Ad esempio l’espressione seguente:

1:10

rappresenta un vettore riga che contiene i numeri interi da 1 a 10

1 2 3 4 5 6 7 8 9 10

Per ottenere una specifica sequenza invece, si deve indicare un incremento. Per esempio:

>> 100:-7:50

ans =

   100    93    86    79    72    65    58    51

cioè una sequenza di numeri da 100 a 50 con passo uguale a -7; mentre

>> 0:pi/4:pi

ans =

         0    0.7854    1.5708    2.3562    3.1416

operatore.matlab
Le espressioni sottoscritte che coinvolgono l’operatore due punti assegnano porzioni di una matrice. Ad esempio assegniamo la solita matrice:

A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

ed estraiamone alcuni valori:

A(1:k,j)

rappresenta i primi k elementi della colonna jth di A. Allora estraiamo alcuni elementi:

>> A(1:4,4)

ans =

     4
     8
    12
    16

e calcoliamo la somma della quarta colonna.

>> sum(A(1:4,4))

ans =

    40

Il due punti assegna tutti gli elementi in una riga o colonna di una matrice e la keyword END  assegna l’ultima riga o colonna. Così

>> sum(A(:,end))

ans =

    40

calcola la somma degli elementi nell’ultima colonna di A.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Accesso agli elementi di una matrice in Matlab

MATLAB

Come accedere agli elementi di una matrice in Matlab

Vediamo in questa lezione come accedere agli elementi di una matrice in ambiente Matlab; per prima cosa quindi inseriamo nel workspace di Matlab una matrice di esempio:

>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]

A =

     1     2     3     4
     5     6     7     8
     9    10    11    12
    13    14    15    16

L’elemento in riga i e colonna j di A è denotato con il simbolo A(i,j). Ad esempio:

>> A(4,2)

ans =

    14

è il numero nella quarta riga e seconda colonna. Per la nostra matrice corrisponde a 14. Così risulta possibile calcolare la somma degli elementi nella quarta colonna di A digitando:

A(1,4) + A(2,4) + A(3,4) + A(4,4)

Questo produce:

>> A(1,4) + A(2,4) + A(3,4) + A(4,4)

ans =

    40

ma non è il modo più elegante di sommare una singola colonna. E’ anche possibile per accedere agli elementi di una matrice utilizzare un singolo pedice, A(k). Questo è il modo solito di accedere agli elementi di vettori riga e vettori colonna.

elementi.matlab

Ma si può anche applicare ad una matrice bidimensionale in questo caso la matrice è considerata come un vettore colonna, formato dalle colonne della matrice originale. Così, per la nostra matrice, A(8) è un altro modo di individuare il valore 14 immagazzinato nella posizione A(4,2), cioè quarta riga seconda colonna.

>> A(8)

ans =

    14

Se si tenta di accedere agli elementi di una matrice al di fuori di essa, si commette un  errore:

>> t = A(4,5)
??? Attempted to access A(4,5); index out of bounds because size(A)=[4,4].

(Messaggio di errore)

D’altra parte, se si immagazzina un nuovo valore in un elemento della matrice che eccede il suo ordine, c’`e un aumento dell’ordine per accomodare il nuovo venuto:

>> A(4,5) = 17

A =

1     2     3     4     0
5     6     7     8     0
9    10    11    12     0
13    14    15    16    17

I vettori vengono trattati in Matlab in modo del tutto analogo. È possibile visualizzare le singole voci di un vettore, dopo averlo definito nel modo seguente:

V=[2 1 3 4];

per visualizzare la prima voce è sufficiente digitare:

>> V (1)
ans =
2

Questo comando stampa il primo elemento nel vettore. Si noti inoltre che una nuova variabile chiamata ans è stata creata.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

La matrice di Durer in Matlab

MATLAB

La matrice di Durer è quello che in gergo si chiama un quadrato magico. Un quadrato magico è uno schieramento di numeri interi distinti in una tabella quadrata tale che la somma dei numeri presenti in ogni riga, in ogni colonna e in entrambe le diagonali dia sempre lo stesso numero; tale intero è denominato la costante di magia o costante magica o somma magica del quadrato.

Inseriamo la matrice di Durer:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Verifichiamo tutto quello appena detto sui quadrati magici, usando MATLAB. Il primo tentativo è il seguente:

sum(A)

MATLAB risponde con:

ans = 34 34 34 34

Quando non si specifica una variabile di output, MATLAB usa la variabile ans, per immagazzinare i risultati di un calcolo. Si è in questo modo calcolato un vettore fila che contiene certamente le somme delle colonne di A; ogni colonna ha la stessa somma, la somma magica, 34.

Cosa si può dire sulle somme delle righe? MATLAB ha una preferenza per lavorare con le colonne di una matrice, cosìı il modo più facile per ottenere le somme delle righe è quello di trasporre la matrice. Trasponiamo allora la matrice e facciamone la somma.

L’operazione di trasposizione si ottine aggiungendo un apostrofo alla matrice da trasporre, ad esempio:

A’

determina il risultato seguente:

ans = 16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1

e

sum(A ‘) ‘

produce un vettore colonna che contiene le somme delle righe:

ans = 34 34 34 34

durer

La somma degli elementi della digonale principale è ottenuta facilmente con l’aiuto della funzione diag che estrae solo gli elementi dellla diagonale.

diag(A)

produce:

ans = 16 10 7 1

e

sum(diag(A))

produce:

ans = 34

L’altra diagonale, l’antidiagonale così chiamata non è così importante e MATLAB non ha una funzione immediata per calcolarla. Ma una funzione originariamente creata per il suo uso in grafica, fliplr riporta una matrice da sinistra a destra.

sum(diag(fliplr(A)))
ans = 34

Si è così verificato che la matrice di Durer è davvero una magic square e, nel processo, si sono utilizzate operazioni sulle matrici di MATLAB.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Immettere matrici in Matlab

MATLAB

Si possono immettere matrici in MATLAB in molti modi diversi.

  • – introdurre un elenco esplicito di elementi.
  • – caricare matrici da files di dati esterni.
  • – generare matrici utilizzando la funzione built-in.
  • – creare matrici con le proprie funzioni in M-files.

Iniziamo a far vedere come registrare la matrice come un elenco dei suoi elementi. Si seguano a tal proposito solamente alcune convenzioni di base:

  • Separare gli elementi di una riga con spazi vuoti o virgole.
  • Usare un punto e virgola ”;” per indicare la fine di ciascuna fila.
  • Racchiudere l’elenco intero di elementi con parentesi quadrate , [ ].

matrici.matlabPer registrare la matrice di Durer,basterà semplicemente digitare:

A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB espone a video solo la matrice digitata,

A = 16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

Questo procedimento associa precisamente i numeri a porzioni di memoria. Una volta fornita la matrice, essa è registrata automaticamente nel workspace di MATLAB. Ora si può indicarla semplicemente digitando al prompt di Matlab la lettera A.

>> A

A =

    16     3     2    13
     5    10    11     8
     9     6     7    12
     4    15    14     1

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: