slides - Studenti Democratici

CORSO BASE DI
MATLAB-SIMULINK
Con la collaborazione di Nicola Conenna e Studenti Democratici
Cos’è Matlab? A che serve?
Nasce come software di calcolo per supporto ai problemi di
algebra lineare e al calcolo numerico
Matrici
Matrix Laboratory
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
2
Un po’ di storia ……
Fine anni ‘70 Prof. Cleve Moler (Matematic and Science Computer)
(University of New Mexico) e Steve Bangert
1983 Jack Litter (Electrical Engineer and Science Computer)
(MIT and Stanford University ) incontra Cleve Moler alla Standford
AMORE A PRIMA VISTA
1984 Jack,Cleve e Steve fondano
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
3
Un po’ di storia ……
Matlab diviene con l’aggiunta di librerie e tools uno dei software di
calcolo più potenti del mondo usato nell’ambito della ricerca e
dell’industria.
Campi di applicazione:
-Robotica
-Matematica
-Biologia
-Biotecnologie
-Dispositivi medici e campo farmaceutico
-Scienze della terra
-Finanza
-Difesa e campo aerospaziale
-Automazione industriale
-Elettronica e semiconduttori
-Produzione di energia elettrica
-Campo ferroviario, navale ed altri mezzi di trasporto
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
4
Interfaccia grafica Matlab
Command Window
Finestra comandi per immettere
comandi e visualizzare risultati
numerici
Workspace
Finestra variabili: visualizza
tutte le variabili in uso
Command History
Cronologia comandi
Current Folder
Cartella di lavoro:
Contiene tutti i file della cartella
di lavoro selezionata
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
5
Interfaccia grafica Matlab
Finestra
comandi
Finestra
variabili
Cronologia
comandi
Cartella di
lavoro
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
6
Cos’è Simulink? A Che serve?
Ambiente grafico per la simulazione multidominio
Creazione di modelli matematici tramite schemi a blocchi
Modellazione e simulazione di sistemi dinamici e statici
Test e Controllo Real Time
Completamente integrato con Matlab, questo permette di
esportare i risultati delle simulazioni in Matlab per ulteriori
analisi, oppure è possibile utilizzare algoritmi per creare dati di
ingresso al modello da simulare
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
7
Come avviare Simulink Library Browser
Avvio tramite
icona
Avvio tramite
comando
testuale
Avvio tramite
menù Start
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
8
Interfaccia grafica Simulink
Nuovo
modello
Libreria
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
9
Comandi utili
>>
Indica che il programma può ricevere un comando
who
Permette di visualizzare tutte le variabili
whos
Permette di visualizzare tutte le variabili specificando
nome, dimensione, classe ecc…
clear b
Cancella la variabile selezionata del workspace: ad
esempio la variabile b
clear all
Cancella tutte le variabili presenti nel workspace
close (‘1’)
Chiude la figura scelta ad esempio la 1
close all
Chiude tutte le figure aperte
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
10
Comandi utili
:
;
help plot
Si utlizza per gli intervalli es. m:n (da m a n)
Lo si utilizza alla fine di ogni comando. Se lo si omette
non accade nulla. Quando si ha a che fare con le
variabili l’omissione restituisce il/i valore/i della
variabile
Permette di visualizzare le informazioni relative ad
un comando specifico. Nell’esempio il comando plot
↑
Richiama i comandi precedentemente inseriti
a+↑
Richiama i comandi precedentemente inseriti con
iniziale ‘a’
Variabile temporanea, memorizza l’ultimo valore
calcolato
Attenzione!! Matlab è case sensitive
ans
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
11
Operazioni con scalari
Utilizzare Matlab come calcolatrice
SOMMA
>> 6+9
DIFFERENZA
>> 5-12
DIVISIONE
>> 25/98
MOLTIPLICAZIONE
>> 6*6
ans =
ans =
ans =
ans =
RADICE
QUADRATA
>> sqrt(2)
ans =
15
-7
0.2551
36
1.4142
RADICE CUBICA
>> 8^(1/3)
ELEVAMENTO A
POTENZA
>> 25^6
OPERAZIONE CON ;
>> 5+3;
>> ans
OPERAZIONE CON
NUMERI COMPLESSI
5i+(3+2i)
ans =
ans =
ans =
ans =
2
244140625
8
Dipartimento di ingegneria Elettrica e dell’Informazione
3.0000 + 7.0000i
Dario De Santis
12
Operazioni con scalari
Alcuni operatori
Logaritmi
log
log10
log2
exp
e
cos
sin
tan
cotan
acotan
acos
asin
atan
Logaritmo naturale
Logaritmo in base 10
Logaritmo in base 2
Esponenziali
Esempio 2*exp(3) è uguale a 2*e^3 e(costante di Nepero)
Esempio 2e6 è uguale a 2*10^6 (2000000)
Funzioni trigonometriche
coseno(in radianti)
cosd
coseno(in gradi)
seno (in radianti)
sind
seno(in gradi)
tangente(in radianti)
tand
tangente(in gradi)
tangente(in radianti)
cotand
tangente(in gradi)
inv. tangente(in radianti) acotand
inv. tangente(in gradi)
inv. coseno(in radianti)
acosd
inv. coseno(in gradi)
inv. seno(in radianti)
asind
inv. seno(in gradi)
inv. tangente(in radianti) atand
inv. tangente(in gradi)
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
13
Operazioni con scalari
Creare e utilizzare variabili
Creazione della variabile h a partire da un espressione algebrica formata dalle
variabili a,b,c e d
>> a=2;
>> b=5;
>> c=7;
>> d=sqrt(10);
>> h=a+(b*(c/(1+d)));
>> h
h=
10.4089
Creazione della variabile h (scalare,vettore o matrice) senza inizializzarla
>> h=[];
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
14
Utilizzo del Workspace
Creazione della singola variabile(scalare, vettore, matrice, ecc.)
Salvataggio della singola variabile sul computer
Salvataggio dell’intero Workspace
Apertura della singola variabile salvata sul computer
Apertura dell’intero Workspace salvato sul computer
Importazioni variabili
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
15
Nuova
Variabile
Utilizzo del Workspace
Importa i dati
Elimina i dati
Apre la variabile
selezionata
(Variable Editor)
Salva i dati
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
16
Operazioni con vettori
- Creazione di un vettore
>> Z=[5 0 6 9 ];
>> Z
Z=
5 0 6 9
>> D=[0:0.01:5];
>> D=[0:5];
>> D
D=
0 1 2 3
4
5
- Conoscere la dimensione del vettore Z
>> size(Z)
ans =
1 4
- Conoscere il numero di elementi del vettore Z
>>length(Z)
ans =
4
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
17
Operazioni con vettori
- Conoscere il valore max del vettore Z
>> max(Z)
ans =
9
- Conoscere il valore minimo del vettore Z
>> min(Z)
ans =
0
- Conoscere il valore della media aritmetica del vettore Z
>> mean(Z)
ans =
5
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
18
Operazioni con vettori
-Creare un vettore b uguale al valore assoluto del vettore m
>> m=[5 -3 6 -20];
>> b=abs(m)
b=
5 3 6 20
-Calcolare il valore della somma degli elementi del vettore Z
>> sum(Z)
ans =
20
-Creazione di un vettore di tutti zeri/uno da 5 elementi(1*5)
>> zeros(1,5)
ans =
0 0 0 0
0
>> ones(1,5)
ans =
1 1 1
Dipartimento di ingegneria Elettrica e dell’Informazione
1
1
Dario De Santis
19
Operazioni con vettori
-Creare una vettore L uguale al trasposto del vettore Z
>> Z=[1 5 3 -1]
Z=
1 5 3 -1
>> L=Z'
L=
1
5
3
-1
-Visualizzare un singolo elemento del vettore Z
>> Z=[1 5 3 -1]
Z=
1 5 3 -1
>> Z(2)
ans =
5
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
20
Operazioni con vettori
-Modificare un singolo elemento del vettore Z
>> Z=[1 5 3 -1]
Z=
1 5 3 -1
>> Z(2)
ans =
5
>> Z(2)=0;
>> Z
Z=
1 0 3 -1
-Creare una variabile m uguale al secondo elemento del vettore Z
>> Z=[1 5 3 -1]
Z=
1 5 3 -1
>> m=Z(2)
m=
0
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
21
Operazioni con vettori
-Somma tra due vettori
>> a=[1 5 6 -32];
>> b=[7 -5 6 8];
>> a+b
ans =
8 0 12 -24
-Somma tra scalare e vettore
>> a=[1 5 6 -4];
>> 1+a
ans =
2 6 7 -3
-Prodotto tra uno scalare ed un vettore
>> a=[10 -2];
>> c=5*a
c=
50 -10
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
22
Operazioni con vettori
-Prodotto scalare tra due vettori
>> a=[10 -2];
>> b=[8 5];
>> c=dot(a,b)
c=
70
>> c=a*b'
c=
70
-Prodotto vettoriale
>> a=[1 5 6 ];
>> b=[1 -5 8 ];
>> cross(a,b)
ans =
70 -2 -10
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
23
Operazioni con vettori
- Operazioni elemento per elemento
>> a=[10 -2 3];
>> b=[8 5 2];
>> a.*b
ans =
80 -10 6
Il punto si utilizza per effettuare operazioni
elemento per elemento
>> a=[0 2 3];
>> a^2
Error using ^
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER
(.^) instead.
>> a.^2
ans =
0 4 9
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
24
Operazioni con vettori
- Altri esempi di operazioni con vettori
Seno
>> a=[90 0 180 270];
>> sind(a)
ans =
1 0 0 -1
Coseno
>> a=[25 0 100 -4];
>> sqrt(a)
ans =
5.0000
0
10.0000
0 + 2.0000i
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
25
GRAFICI
- PLOT DEL VETTORE y
>> x=[0:0.01:2*pi];
>> y=sin(x);
>> plot(y);
L’asse x riporta il numero di punti
di y uguale al numero di punti di x
- PLOT DEI VETTORI x,y
>> plot(x,y);
L’asse x riporta i valori di x
corrispondenti a y, ovvero
riporta i radianti
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
26
GRAFICI
E’ possibile specificare il colore
della traccia, digitando la lettera
corrispondente al colore, tra apici.
Ad es. ‘r’ per il rosso, ‘g’ per il
verde, ecc.
Per specificare il titolo e il nome
degli assi è possibile usare i
comandi title, xlabel ed ylabel.
(I nomi vanno indicati tra apici)
Mentre per attivare la griglia grid
on, per disattivarla grid off.
>> x=[0:0.01:2*pi];
>> y=sin(x);
>> plot(x,y,'r');
>> title('Seno di x');
>> xlabel('x [rad.]');
>> ylabel('sin(x)');
>> grid on;
>> legend sinx;
Per attivare la legenda e nominarla
è sufficiente il comando
legend+nome(senza apici).
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
27
GRAFICI
Per plottare più grandezze è
possibile utilizzare una volta il
comando plot, specificando i vettori
ordinate e ascissa tante volte
quante volte sono le grandezze da
plottare.
Per la legenda è possibile
specificare i nomi delle tracce
separate dallo spazio.
>> x=[0:0.01:2*pi];
>> y=sin(x);
>> y1=cos(x);
>> plot(x,y,'g',x,y1,'r');
>> title('Seno e Coseno di x');
>> xlabel('x [rad.]');
>> ylabel('sin(x)/cos(x)');
>> grid on
>> legend sinx cosx
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
28
GRAFICI
- BAR
>> q=[-5:0.5:5];
>> bar(q);
- STEM
>> q=[-5:0.5:5];
>> stem(q);
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
29
GRAFICI
-COMANDO HOLD ON
Per creare più grafici nella stessa
figura è possibile utilizzare il
comando hold on.
>> x=[0:0.1:2*pi];
>> y=sin(x);
>> plot(x,y);
>> hold on;
>> y1=cos(x);
>> plot(x,y1);
Per disattivare il comando hold on
si utilizza il comando hold off.
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
30
GRAFICI
-COMANDO FIGURE
Quando si crea un nuovo grafico il software crea automaticamente una
nuova figura nella quale viene plottato il grafico e gli assegna il nome
Figure 1.
Se si creano più grafici senza il comando figure(n), Matlab in automatico
eliminerà la Figure 1 precedentemente creata e ne creerà un’altra.
Prima di creare un grafico è possibile creare e specificare la figura nella
quale realizzare il grafico tramite il comando figure(n). Dove n è il numero
della figura che si vuole realizzare.
Dopo aver digitato figure(n), i comandi per creare grafici (plot, subplot, bar,
stem, ecc.) agiranno sulla Figure n.
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
31
GRAFICI
sin(x)
Dipartimento di ingegneria Elettrica e dell’Informazione
cos(x)
Dario De Santis
32
GRAFICI
-COMANDO SUBPLOT
Con il comando subplot si divide la figura in una matrice di grafici
subplot(i,j,n) (i è l’indice di riga, j è l’indice di colonna,n indica la posizione
del grafico all’interno della matrice)
>> x=[0:0.01:2*pi];
>> ys=sin(x);
>> yc=cos(x);
>> q=[-5:0.5:5];
>> subplot(2,2,1);
>> plot(x,ys);
>> subplot(2,2,2);
>> plot(x,yc);
>> subplot(2,2,3);
>> bar(q);
>> subplot(2,2,4);
>> stem(q)
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
33
GRAFICI
sin(x)
cos(x)
bar(q)
stem(q)
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
34
GRAFICI
-Grafici mediante Workspace
Selezione grafico sulla/sulle
variabile/variabili selezionate
Dipartimento di ingegneria Elettrica e dell’Informazione
Dario De Santis
35