Operatori fondamentali


Somma e sottrazione

Se due matrici hanno le stesse dimensioni, che per i vettori significa avere lo stesso numero di elementi, possono essere sommate o sottratte tra di esse mediante gli operatori <+> e <->. Mediante gli stessi operatori è possibile sommare uno scalare a ad una matrice o a un vettore v, ottenendo come risultato una matrice o un vettore in cui ciascun elemento è pari al corrispondente elemento di v più la quantità a. Per esempio si ha

a=3;
v=[1 2];
v2=a+v <Invio>
v2 =
    4    5

In questo caso il risultato dell’operazione è stato assegnato alla variabile v2, come specificato dalla riga v2=a+v (il risultato viene visualizzato per l’assenza del punto e virgola nella detta riga). In tutti i casi invece in cui si esegue una operazione senza indicare la variabile di assegnazione, il risultato viene assegnato ad una variabile indicata con ans (ans sta per “answer”, risposta). Per esempio digitando

a=3;
v=[1 2];
a+v <Invio>

si ottiene

ans =
     4    5

Nei casi precedenti va inteso che il codice viene prima digitato per intero nell’editor, e poi trasferito mediante Copia/Incolla al prompt di MATLAB (fig. 1). Alternativamente, è possibile introdurre le righe una per volta direttamente al prompt, dando <Invio> ogni volta, oppure il codice può essere scritto di seguito sulla stessa riga (fig. 2). Si noti che i tasti freccia in alto e freccia in basso non possono essere usati per spostarsi all’interno del prompt di MATLAB, in quanto la loro funzione è di riprodurre in avanti o in indietro, per comodità dell’utente, i comandi già eseguiti dal programma (verificare direttamente tale proprietà).

 
Seleziona tutto (da Modifica o con il mouse)
Incolla (da Edit o con Ctrl+V)
Copia (da Modifica o con Ctrl+C)

Invio

Fig. 1


 
Fig. 2
 

Moltiplicazione

L’operatore <*> ha il significato di moltiplicazione tra matrici. Da quanto detto sull’argomento, è chiaro che due vettori di uguali dimensioni non possono essere moltiplicati tra di loro (pena il messaggio Inner matrix dimension ...). E’ possibile però, mediante l’operatore <.*>, eseguire una moltiplicazione tra elementi corrispondenti di due vettori di uguali dimensioni:

v1=[1 2 3];
v2=[1 3 4];
v1.*v2 <Invio>
ans =
     1    6    12

Quando invece si moltiplica un vettore v  per uno scalare a  la distinzione tra gli operatori <*> e <.*> decade: in entrambi i casi ciascun elemento del vettore risultante è pari al corrispondente elemento del vettore v moltiplicato per a:

v=[1 2 3];
a=2;
a*v <Invio>
ans =
     2    4    6
a.*v <Invio>
ans =
     2    4    6

Divisione

L’operatore </> ha il significato di divisione tra matrici. Due vettori v1 e v2 di uguale dimensione possono essere divisi tra loro, ma il risultato è uno scalare e non un vettore in cui ciascun elemento è pari alla divisione tra i corrispondenti elementi di v1 e v2. Analogamente che per la moltiplicazione, è possibile, mediante l’operatore <./>, eseguire una divisione tra elementi corrispondenti di due vettori di uguali dimensioni:

v1=[1 2 3];
v2=[1 3 4];
v1./v2 <Invio>
ans =
    1.0000    0.6667    0.7500

Dati un vettore v e uno scalare a, nella divisione di v per a non c’è differenza tra l’uso degli operatori </> e <./>; in entrambi i casi il risultato è un vettore in cui ciascun elemento è pari al corrispondente elemento di v diviso a:

v=[1 2 3];
a=2;
v/a <Invio>
ans =
    0.5000    1.0000    1.5000
v./a <Invio>
ans =
    0.5000    1.0000    1.5000

Diversamente, dividendo a per v si ottengono diversi risultati utilizzando gli operatori </> e <./>; nel primo caso MATLAB restituisce un messaggio di errore, in quanto interpreta l’operazione come divisione tra matrici, nel secondo caso il risultato è un vettore in cui ciascun elemento è pari ad a diviso il corrispondente elemento di v:

v=[1 2 3];
a=2;
a/v <Invio>
??? Error using ==> /
Matrix dimensions must agree.
a./v <Invio>
ans =
    2.0000    1.0000    0.6667

Elevazione a potenza

L’operatore <^> seguito da un numero ha la funzione di elevazione a potenza. Per esempio digitando A^2 si ottiene il quadrato della matrice A, nel senso che la matrice viene moltiplicata per sé stessa con l’operazione di prodotto tra matrici. Abbiamo già evidenziato che un vettore v  non può essere elevato a potenza. E’ possibile però, mediante l’operatore <.^>, ottenere un vettore in cui ciascun elemento sia pari al corrispondente elemento di v elevato alla potenza indicata:

v=[1 2 3];
v.^3 <Invio>
ans =
     1    8    27

Funzioni elementari

Quella che segue è una lista delle più comuni funzioni elementari utilizzabili in MATLAB. Si intende che ciascuno degli operatori elencati, se applicato ad una matrice, un vettore o uno scalare, applica la funzione considerata a ciascuno degli elementi dell’operando. L’operando deve  sempre essere racchiuso tra parentesi tonde, come per esempio in sqrt(3).

 
sqrt radice quadrata
sin seno
asin arcoseno
cos coseno
acos arcocoseno
tan tangente
atan arcotangente
atan2 Si applica nella forma atan2(x,y) a due operandi reali o complessi x e y, e restituisce l’arcotangente su quattro quadranti della parte reale degli elementi di x y
exp esponenziale
log logaritmo naturale (base e)
log10 logaritmo decimale (base 10)
log2 logaritmo in base 2
abs valore assoluto
angle angolo di fase (argomento)
imag coefficiente dell’immaginario
real parte reale