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à).
| | | ||
| | 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 e 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 |
