Matlab è un sistema software per calcolo numerico
Sistema = collezione di componenti SW (pensiamoli come “programmi”)
Di seguito con “Matlab” ci riferimento sia al SW che al linguaggio
Come avere accesso a Matlab
È importantissimo scaricalo per esercitarsi a casa
Matlab ha una interfaccia grafica (Graphical User Interface)
L’elemento più importante della GUI è la finestra dei comandi
Il simbolo “>>” si chiama prompt ed indica dove potete scrivere
Nella colonna di SX trovate un file browser
Permette di esplorare la cartella corrente ed il suo contenuto
Nella colonna di DX trovate la finestra di workspace
Permette di visualizzare le variabili che sono state definite
Il “linguaggio Matlab” si basa su pochi concetti fondamentali
E diversi concetti più complessi, ma meno essenziali:
Oggi cominciamo a vederli insieme
Il tipo di dato più importante in Matlab sono i numeri “reali”
Sintassi (notazione "normale):
3.14159 % Prime cifre di pi-greco
1000 % Il testo dopo "%" viene ignorato!
% Si dice che "%" inizia un commento
Sintassi (notazione scientifica):
Semantica: un numero in \(\mathbb{R}\)
Provate a digitare un numero e battere [INVIO]!
Matlab permette di trattare anche i numeri complessi
Sintassi:
i
indica la parte immaginariaj
si può utilizzare in alternativa ad i
Semantica: un numero in \(\mathbb{C}\)
Matlab permette di trattare valori logici: “vero” o “falso”
I due valori sono assimilabili a numeri:
true
è assimilabile al numero 1
false
è assimilabile al numero 0
Matlab però tiene traccia del fatto che si tratta di valori logici:
Per memorizzare dati, Matlab utilizza il concetto di variabile:
Una variabile è una astrazione per un dato in memoria
Potete pensarla come un contenitore con un nome
Sintassi:
Vediamo un esempio:
a
con valore 5
Il contenuto di una variabile può essere cambiato:
a
con valore 5
a
viene assegnato il valore 3
Una variabile è un contenitore, ricordate?
Una variabile può contenere qualunque tipo di dato:
x
contiene prima un reale, poi un complesso, poi un valore logicoIl nome di una variabile:
_
”_
”, o numeriPer visualizzare il contenuto di una variabile basta scriverne il nome:
Completamento mediante [TAB]:
ans
Abbiamo visto che:
Vuol dire che il numero 42
è stato inserito nella variabile ans
ans
è una variabile (quasi) come tutte le altreProvate a visualizzarne il contenuto (digitandone il nome)!
Alcune variabili sono automaticamente disponibili:
E.g.: pi-greco “pi
”
Cosa succede se ridefinite una variabile speciale?
pi
diventa non accessibileUna espressione è una notazione che restituisce un valore quando viene eseguita
Il processo per cui questo avviene si chiama anche valutazione:
Un modo per pensarla: il valore restituito “rimpiazza” l’espressione
Si può usare una espressione ovunque sia richiesto un dato
La notazione per un tipo di dato è un esempio di espressione:
10
10
Il risultato dell’espressione viene memorizzato nella variabile ans
Il nome di una variabile è una espressione semplice
x
sia definita…Se la variabile non è definita viene riportato un errore
Eccezione:
=
”Matlab fornisce un costrutto fondamentale per comporre espressioni:
Si chiama chiamata a funzione una notazione che permette di eseguire un sotto-programma precedentemente definito
Qualche esempio:
plus(2, 5) % Esegue una somma
minus(10, 3) % Esegue una sottrazione
times(2, 3) % Esegue una moltiplicazione
Chiamando una funzione si esegue il sotto-programma corrispondente
La sintassi per una chiamata a funzione è:
I dati tra parentesi rappresentano l’input del sotto-programma
Tipicamente un funzione incapsula un algoritmo
Si chiama “funzione” per analogia con le funzioni matematiche:
Vediamo qualche altro esempio di chiamata a funzione:
sin(3.14156) % Seno (funzione trigonometrica)
cos(pi) % Coseno
atan(1) % Arcotangente
abs(-3) % Valore assoluto
power(2, 3) % potenza: 2^3
sqrt(4) % Radice quadrata
exp(2) % esponenziale: e^2
log(2.7183) % logaritmo naturale
log10(100) % Logaritmo in base 10
real(2 + i) % Parte reale
imag(2 + i) % Parte immaginaria
Una chiamata a funzione viene valutata come segue:
I parametri possono essere espressioni di qualunque tipo
In particolare, possono essere delle altre chiamate a funzione:
La nostra espressione di partenza:
Per valutare plus
dobbiamo valutare i parametri:
5
(immediato da valutare)times
times
dobbiamo valutare i parametri:
2
minus
minus
dobbiamo valutare i parametri:
7
5
La nostra espressione di partenza:
Per valutare plus
dobbiamo valutare i parametri:
5
(immediato da valutare)times
times
dobbiamo valutare i parametri:
2
2
La nostra espressione di partenza:
Per valutare plus
dobbiamo valutare i parametri:
5
(immediato da valutare)4
La nostra espressione di partenza:
L’intera espressione denota il valore 9
Le funzioni aritmetiche hanno anche una sintassi speciale
plus(2, 3)
…+
” e scrivere 2 + 3
Vediamo i principali operatori aritmetici_
A + B % somma, e.g. 2 + 3
A - B % sottrazione, e.g. 2 - 3
- A % cambiamento di segno, e.g. -2
A * B % prodotto, e.g. 2 * 3
A / B % divisione, e.g. 2 / 3
A^B % elevamento a potenza, e.g. 2^3
A
e B
sono due espressioni che denotano un valore numericoHanno sintassi speciale anche per gli operatori di confronto:
A == B % "vero" se uguali
A ~= B % "vero" se diversi
A < B % "vero" se minore
A <= B % ...
A > B % ...
A >= B % ...
A
e B
sono due espressioni che denotano un valore numericoPer esempio:
Hanno sintassi speciale anche per gli operatori logici
A & B % "and": vero se A è vero _e_ B è vero
A | B % "or": vero se A è vero _o_ B è vero
~A % "not": vero se A è falso
A
e B
sono due espressioni che denotano un valore logicoQualche esempio:
(1 < 2) & (-1 ~= 1) % Risp.: ans = logical 1
(1 < 2) & (-1 == 1) % Risp.: ans = logical 0
(1 < 2) | (-1 == 1) % Risp.: ans = logical 1
(1 > 2) | (-1 == 1) % Risp.: ans = logical 0
NOTA: “~” su Windows = Alt+126
(sul tastierino numerico)
Come accennato, i valori logici sono interpretabili come valori numerici:
\[ \begin{align} {\tt true} &\longrightarrow 1\\ {\tt false} &\longrightarrow 0 \end{align} \]
Vale anche l’inverso: valori numerici sono interpretabili come logici:
\[ \begin{align} 0 &\longrightarrow {\tt false}\\ \neq 0 &\longrightarrow {\tt true} \end{align} \]
Attenzione: ogni numero \(\neq 0\) viene interpretato come “vero”:
Consideriamo l’espressione:
Sappiamo (per regole di matematica) che va interpreta come:
Questa interpretazione si basa su due proprietà degli operatori:
Matlab utilizza le stesse proprietà per interpretare gli operatori
Operatori, per priorità decrescente | Associatività |
---|---|
chiamata a funzione | sx |
elevamento a potenza | sx |
operatori + e - unari, operatore ~ |
sx |
moltiplicazione e divisione | sx |
somma e sottrazione | sx |
operatori di confronto | sx |
operatore and logico | sx |
operatore or logico | sx |
Qualche esempio:
2 * 3 + 4 % --> (2 * 3) + 4
2 * plus(3, 4) % --> (plus(2,3)) * 2
2 + 1 == 1 + 2 % --> (2 + 1) == (1 + 2)
1 == 1 | 2 < 3 % --> (1 == 1) | (2 < 3)
Per forzare un ordine diverso, si possono usare le parentesi
Se c’è un assegnamento, esso viene eseguito dopo la valutazione:
Matlab mette a disposizione un’enormità di funzioni
Ognuna ha la sua definizione!
Come fare ad orientarsi?
Per conoscere la specifica di una funzione con nome noto
Potere usare i comandi help
o doc
help
visualizza un messaggio sulla finestra dei comandidoc
apre una finestra esterna nella GUIProvate con:
Se conoscete solo parte del nome di una funzione
Potete iniziare a scrivere a poi premere [TAB]:
help
)Provate con:
È una funzionalità molto utile
Considerate le seguenti espressioni (ed assegnamenti):
a = 10 * 2 + 3
b = 2^3 - 1
log(exp(a))
(a + 2) - (b - 2)
c = a + b == 30
a + b * c
c & (a < 2^4)
a + b + c
abs(-2^3) == b + 1