MATLAB - Programmazione - 2
Antonino Polimeno
antonino.polimeno@unipd.it
Manipolazione di matrici - 1
Input di matrici
→ Definizione manuale: A = [1, 2, 3; 7, 8, 9]
→ Generazione da funzioni
→ Lettura da file (e.g. “load”)
Operazioni su matrici
→ Addizione (+), sottrazione (-), moltiplicazione (*)
→ Divisione sinistra: x = A \ b è la soluzione di A*x = b
→ Divisione destra: x = b / A è la soluzione di x*A = b
→ Potenza (^)
→ Aggiunta (‘)
→ Trasposta (.’)
Le operazioni * , ^, \, / si riferiscono agli elementi della matrice se precedute dal punto (.)
Manipolazione di matrici - 2
Operazioni sugli elementi di matrici
Operazioni Forma algebrica MATLAB
Addizione a + b a + b
Sottrazione a – b a – b
Moltiplicazione a x b a .* b
Divisione a b a ./ b
Esponente ab a .^ b
>> x = [ 1 2 3 ];
>> y = [ 4 5 6 ];
>> z = x .* y z =
4 10 18
Esempio: gli elementi di z sono i prodotti
degli elementi di x e y
Manipolazione di matrici - 3
− Elemento i,j: A(i, j).
− Vettore colonna formato dagli elementi 1,2,3 della colonna 2 della matrice: A(1:3 , 2)
− Matrice formata dalle righe 1,2,3 e dalle colonne 2,3,4:
A([1:3], [2:4])
− Matrici speciali:
− Matrice di zeri: zeros(1,3)
− Matrice di uno: ones(2,4)
− Matrice di numeri casuali con distribuzione uniforme: rand(3,5)
− Matrice di numeri casuali con distribuzione normale: randn(2,5)
A=magic(3): quadrato magico 3x3
Manipolazione di matrici - 4
zeros(n) n x n matrice di zeri
zeros(m,n) m x n matrice di zeri
ones(n) n x n matrice di uno
ones(m,n) m x n matrice di uno
size (A) per una matrice m x n matrix A, è il vettore riga 1x2 che contiene il numero di righe e colonne
length(A) per una matrice m x n matrix A, è il numero massimo tra m e n
X = [A1, A2 …; B1, B2 …; … ] concatenazione di matrici (se compatibili)
Manipolazione di matrici - 5
Aggiunta B = A’
Identità eye(n) → matrice identità n x n
eye(m,n) → matrice m x n matrix con 1 nella ‘diagonale’
e 0 negli altri elementi Somme/sottrazioni C = A + B
C = A – B Moltiplicazione scalare B = A.
Moltiplicazione C = A*B
Inversa B = inv(A), con A n x n
N.B. rank (A) → dà il rango di A
Potenza B = A.^2 matrice di elementi quadrati di A C = A * A matrice quadrata di A, con A n x n Determinante det (A),, con A n x n
A, B, C matrici generiche, e m, n, scalari
Sistemi lineari - 1
− Sistema di 3 equazioni lineari in tre incognite:
1 2 3
1 2 3
1 2 3
3 2 – 10
3 2 5 – – 1
x x x
x x x
x x x
1 2 3
3 2 1 10
1 3 2 5
1 1 1 1
x x x
A x b Ax b
Sistemi lineari - 2
− Soluzione con calcolo dell’inversa Ax = b
A-1Ax = A-1b x = A-1b
− MATLAB:
>> A = [ 3 2 -1; -1 3 2;
1 -1 -1];
>> b = [ 10; 5; -1];
>> x = inv(A)*b x =
-2.0000 5.0000 -6.0000
Answer: x1 = -2, x2 = 5, x3 = -6
− Soluzione diretta Ax = b
− MATLAB:
>> A = [ 3 2 -1; -1 3 2;
1 -1 -1];
>> b = [ 10; 5; -1];
>> x = A\b x =
-2.0000 5.0000 -6.0000
Polinomi - 1
− I polinomi sono rappresentati come vettori dei coefficienti in MATLAB.
− Esempio: A(s) = s3 + 3s2 + 3s + 1 è rappresentato come il vettore [1 3 3 1]
− Se s è uno scalare, possiamo generare uno scalare
>> A = s^3 + 3*s^2 + 3*s + 1;
− Se s è una matrice, generiamo una una matrice in cui ogni elemento è un polinomio nel corrispondente elemento di s
>> A = s.^3 + 3*s.^2 + 3*s. + 1;
− La funzione polyval(a,s) valuta un polinomio con coefficienti nel vettore a per i valori di s
>> s = linspace (-5, 5, 100);
>> coeff = [ 1 3 3 1];
>> A = polyval (coeff, s);
>> plot (s, A),
>> xlabel ('s')
>> ylabel ('A(s)')
Polinomi - 2
Operazione MATLAB
Somma c = a + b somma dei polinomi
Prodotto per uno scalare
b = 3*a polinomio A per 3
Prodotto di polinomi
c = conv(a,b) coefficienti del polinomio prodotto di A e B
Divisione di polinomi
[q,r] = deconv(a,b) q è il vettore dei coefficienti del polinomio quoziente, r è il vettore dei coefficienti del polinomio resto
Derivata polyder(a) coefficienti della derivata
polyder(a, b) coefficienti della derivata del prodotto.
[n,d]=polyder(b,a) coefficienti della derivata del rapporto
Radici roots(a) radici del polinomio.
poly(r) polinomio che ha per radici gli elementi del vettore r
Script - 1
− Script: istruzioni raggruppate in un file
− Esempio script magicrank.m che plotta i ranghi dei primi 20 quadrati magici
r = zeros(1,20);
for n = 1:20
r(n) = rank(magic(n));
end
bar(r)
− Il file può essere richiamato da Matlab semplicemente come
>> magirank
Script - 2
Script - 3
− Gli script sono file ASCII (testo) con estensione .m, e.g. filename.m
− Possiama definire delle funzioni, che possono essere richiamate da Matlab con degli argomenti
− Il nome del file deve coincidere con il nome della funzione
− Esempio
− definizione di yplusx.m
function yplusx(y,x) z = y + x;
end
− esecuzione di yplusx
>> yplus(4,5) ans =
9
Controlli
→ If
→ Switch
→ For loops
→ While loops
→ Continue
→ Break
If A > B
‘greater’
elseif A < B
‘less’
elseif A = = B
‘equal’
else
error(‘Unexpected situation’) end
for i = 1:m for j = 1:n
H(i,j) =1/(i+j) end
end
Grafica - 1
− Plot del polinomio y = 2x
2+ 7x + 9 (lin/lin, log/lin,lin/log, log/log)
% Generate the polynomial:
x = linspace (0, 10, 100);
y = 2*x.^2 + 7*x + 9;
% plotting the polynomial:
figure (1);
subplot (2,2,1), plot (x,y);
title ('Polynomial, linear/linear scale');
ylabel ('y'), grid;
subplot (2,2,2), semilogx (x,y);
title ('Polynomial, log/linear scale');
ylabel ('y'), grid;
subplot (2,2,3), semilogy (x,y);
title ('Polynomial, linear/log scale');
xlabel('x'), ylabel ('y'), grid;
subplot (2,2,4), loglog (x,y);
title ('Polynomial, log/log scale');
xlabel('x'), ylabel ('y'), grid;
− Per aggiungere grafici ad un grafico esistente: hold on
− plot multipli: subplot
Grafica - 2
Grafica - 3
grid on Aggiunge una griglia di inee tratteggiate nei tick marks
grid off Rimuove la griglia
grid Cambia lo stato della grliglia ( da off a on, oppure da on a off)
title (‘text’) Titolo
xlabel (‘text’) Etichetta ascisse ylabel (‘text’) Etichetta ordinate
text (x,y,’text’) Aggiunge un testo nella posizione (x,y) dove (x,y)
sono definiti nelle unità di misura del grafico
Grafica - 4
Simbolo Colore
y giallo
m magenta
c cyan
r rosso
g verde
b blu
w bianco
k nero
Symbol Marker
.
o
x
+ +
*
s □
d ◊
v
^
h esagono
Colore del marker o della linea Marker Stile linea
Simbolo Stile
– intera
: punteggiata
–. linea-punto – – tratteggiata