Array speciali
- Matrice piena di 0: zeros(R,C); zeros(N)
- Matrice piena di 1: ones(R,C), ones(N)
- Matrice identità (tutti 0, 1 sulla diagonale): eye(R,C), eye(N)
- Matrice di numeri casuali (nell’intervallo [0 1]): rand(R,C), rand(N)
exp = e numero di nepero
sort: ordina i vettori in ordine crescente
sum: fa la sommatoria
fzero(x) = calcola gli zero della funzione
min(x) = calcola il minimo
max = calcola il massimo
fminbnd(‘nome funzione’, estremo inf, estremo sup) = calcola il punto di minimo tra inf e sup in una funzione.
Concatenare vettori
Es. a = [0, 1, 2]; b = [1, 2, 3]
[a,b] = si attaccano a dx
[a;b] = vettore b va a capo
Vettori intervallati
- Primo:incremento:massimo → produce un vettore di elementi regolarmente intervallati, senza arrivare per forza all’estremo sup.
- Linspace(start:last:numero di valori) → arriva assolutamente all’estremo superiore.
- Logspace(a,b,numero di valori) → vettore di elementi intervallati logaritmicamente da 10a .10.
Coordinate nelle matrici
- Indichiamo un particolare elemento di una matrice specificando la riga e la colonna usando le parentesi e la virgola.
- Se vogliamo selezionare più di un elemento (es.): matrice = ([1 2], [3 4]) →
- Possiamo specificare una sottomatrice rettangolare.
- Usare le parentesi dopo il nome della matrice.
- Righe desiderate, virgola, colonne desiderate.
Intervallando con : si può selezionare una parte di riga/colonna: es. matrice (1,2:4) (prima riga, dal numero 2 al numero 4).
bob(n) → Per i vettori monodimensionali (es. [1 2 3 4], bob(4) = 4).
Se ci posizioniamo con un solo indice, esso andrà per colonne.
Operatori utili per le matrici
- ’ → Apostrofo per fare la matrice trasposta.
- Size → Per la dimensione (numero di righe e colonne).
- Length → Il maggiore tra le Sizes.
- Diag(nome matrice) → Elementi sulla diagonale.
- Reshape → Ridimensiona l’insieme di elementi (reshape(nome matrice, R,C)).
Stringhe
Composti da caratteri alfanumerici, sono utilizzate per i testi. Si utilizzano le virgolette doppie (“ , “) prima e dopo un testo.
Vettori di caratteri → Per retrocompatibilità si possono creare vettori di carattere, con la virgoletta (‘, ‘) prima e dopo.
- Si possono creare vettori e matrici di Stringhe, es. name = [ “Marty” ; “James” ; “Bob” ].
- Per vettori di caratteri di più righe, il numero di caratteri deve essere lo stesso, es. name = ['Marty' ; 'James' ; 'Bob ' ] → N.B. il numero di caratteri deve essere lo stesso, infatti dopo Bob ci sono due spazi.
- Per un gruppo di vettori di caratteri di lunghezze diverse si può usare il vettore di celle: es. name = { 'Marty' ; 'James' ; 'Bob’ }.
Polinomi
In MATLAB i vettori vengono utilizzati spesso per rappresentare i coefficienti di un polinomio.
3 2
Ad esempio i coefficienti di: =0 − 7 + 40 − 34 sono rappresentati nel vettore a = [1,-7,40,-34], in ordine decrescente!
Prodotto e divisione tra polinomi
- conv(a,b) calcola il prodotto dei due polinomi descritti dai vettori dei coefficienti a e b. I due polinomi possono non avere lo stesso grado. Il risultato è il vettore dei coefficienti del prodotto polinomiale.
- [q,r] = deconv(num,den) calcola il risultato della divisione tra un polinomio numeratore (il cui vettore dei coefficienti è num) ed un polinomio denominatore (il cui vettore dei coefficienti è den). Il polinomio quoziente è dato dal vettore dei coefficienti q, e il vettore dei coefficienti del resto è r.
Esempio:
>>a = [9,-5,3,7];
>>b = [6,-1,2];
>>product = conv(a,b)
product =
54 -39 41 29 -1 14
>>[quotient, remainder] = deconv(a,b)
quotient =
1.5 -0.5833
remainder =
0 0 -0.5833 8.1667
Radici del polinomio
- roots(a) → Calcola le radici di un polinomio definito dal vettore dei coefficienti a. Il risultato è un vettore colonna che contiene le radici del polinomio.
>>r = roots([2, 14, 20])
r = -5; -2
- poly(r) calcola i coefficienti del polinomio le cui radici sono specificate nel vettore r. Il risultato è un vettore riga che contiene i coefficienti del polinomio.
Es. >>c = poly([-5, -2])
c = 1, 7, 10
- polyval(a,x) calcola i valori del polinomio per i valori specificati nel vettore (o matrice) x, per la sua variabile indipendente. I coefficienti del polinomio sono contenuti nel vettore a. I risultati hanno le stesse dimensioni di x.
3 2
Grafico del polinomio → Es. disegnare il grafico del polinomio: f(x) = ,9 − 5 + 3 + 7 per −2 ≤ x ≤ 5.
Risoluzione: >>a = [9,-5,3,7];
>>x = [-2:0.01:5];
>>f = polyval(a,x);
>>plot(x,f),xlabel(’x’),ylabel(’f(x)’)
Grafici
plot(x,y), dove x e y sono vettori di valori. Per mettere le etichette:
- title('Qua va il titolo')
- xlabel('Etichetta asse X')
- ylabel('Etichetta asse Y')
Operazioni tra matrici
Magic(n): crea una matrice casuale con n righe ed n colonne.
Somma/sottrazione: per matrici di identiche dimensioni la somma è definita termine a termine: il comando F = A + B significa F(r,c) = A(r,c) + B(r,c), uguale per la sottrazione.
Prodotto scalare: il simbolo * indica il prodotto scalare di una matrice per un’altra, ovvero il prodotto tra la riga della prima matrice per la colonna della seconda. Questa operazione non è commutativa.
Matrice inversa (A-1 o inv(A)): essa esiste quando A è quadrata e il determinante è non nullo.
In un sistema lineare quadrato composto dalla matrice dei coefficienti (A), il vettore dei termini noti (b) e il vettore delle incognite, per trovare queste ultime, basta fare: x = A\b (backslash), oppure x = inv(A)*b.
Operazioni elemento per elemento: le operazioni elementari (oltre alla somma e differenza) possono essere svolte elemento per elemento usando la notazione puntata (A e B devono essere della stessa dimensione).
- Moltiplicazione: F = A .* B → F(r,c) = A(r,c) * B(r,c)
- Divisione: F = A ./ B → F(r,c) = A(r,c) / B(r,c)
- Potenza: F = A .^ B → F(r,c) = A(r,c) ^ B(r,c)
Altre funzioni per un vettore A
- Somma degli elementi: sum(A)
- Prodotto degli elementi: prod(A)
- Minimo: min(A)
- Massimo: max(A)
- Mediana: median(A)
- Media: mean(A)
- Deviazione Standard: std(A)
min e max possono dare sia il valore che la posizione (location).
N.B. Queste funzioni, se applicate a una matrice, lavorano per colonne; possiamo però farle lavorare per righe: basta imporgli di lavorare nella seconda dimensione (es: sum(A,2)).
- Sort → Riordina i valori di un vettore in modo crescente. Questa funzione, se applicata ad una matrice, riordina le colonne indipendentemente!
- Sortrows → Si utilizza per riordinare mantenendo intatte le righe. Questa funzione prende in ingresso la matrice ed il numero della colonna secondo cui ordinarla (es. Sortrows (A,1), ordinerà la matrice A in base alla prima colonna).
- Flipud(A) → Gira la matrice sottosopra.
- Flipr(A) → Gira la matrice destra-sinistra.
- Rand(R,C) → Utile per generare matrici casuali tra 0 e 1.
- Randn(R,C) → Si generano numeri casuali con distribuzione normale.
Script e file
Script: è un file di testo (.m) nel quale ogni riga è un comando MATLAB. Esso può essere ri-eseguito, facilmente modificato e può essere spedito a qualcuno.
I comandi sono eseguiti sequenzialmente: il file viene eseguito digitando il suo nome (senza .m), i risultati appaiono nella command window (se non mettiamo il ; ).
Per uno script ordinato
- Sezione dei commenti:
- Il nome del programma e le parole chiave, nella prima riga.
- La data di creazione e i nomi degli autori, nella seconda riga.
- La definizione dei nomi delle variabili per ogni variabile di input e di output. Specificare anche le variabili usate nei calcoli e le unità di misura per tutte le variabili di input e di output!
- Il nome di ogni funzione creata dall’utente che viene usata nel programma.
- Sezione di Input: inserire i dati in input e/o le funzioni di input e commenti per chiarezza.
- Sezione di calcolo.
- Sezione di output: questa sezione contiene le funzioni per visualizzare i risultati del programma.
%: si può utilizzare il simbolo % per aggiungere dei commenti di chiarimento, utili per il programmatore. Utilizzali assolutamente nell’esame.
help: quando si utilizza help in uno script, mostrerà la prima parte del commento con % scritto dal programmatore.
‘: con le virgolette singole si aggiungono i nomi, titoli delle variabili, ecc.
Attenzione!!!!! Non utilizzare nomi di funzioni già esistenti (es. sin, cos, ecc).
In uno script tenere presente di:
- Il nome del file deve cominciare con una lettera e può contenere cifre e il carattere underscore, fino a 31 caratteri.
- Non dare lo stesso nome al file di script e a una variabile.
- Non chiamare uno script con lo stesso nome di un comando o funzione MATLAB. Per verificare se esiste g