Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Introduzione a MATLABIntroduzione a MATLAB
Università degli Studi di Napoli Federico IICdL Ing. Elettrica
Corso di Laboratorio di Circuiti Elettrici
Parte 2
1
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
LL’’operatore : (due punti)operatore : (due punti)Permette di costruire rapidamente vettori:
>> V=60:-5:5V =
60 55 50 45 40 35 30 25 20 15 10 5
Consente di selezionare gli elementi di una matrice:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
354975238
AB=A(1,:)
B =8 3 2
>> C=A(:,2)
C =375
>> k=1:10k =
1 2 3 4 5 6 7 8 9 10
2
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
StringheStringheIn MATLAB è possibile operare, oltre che su numeri, anche su parole (stringhe di caratteri)
>> a='Ingegneria‘a =Ingegneria
>> size(a)ans =
1 10
Le stringhe si manipolano come i vettori
Un testo in MATLAB è un vettore di caratteri
La stringa va inserita tra apici ‘ ‘
La stringa ‘Ingegneria’ è una matrice [1×10]
3
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
sin - Seno.asin - Arcosenocos - Coseno.acos - Arcocosenotan - Tangenteatan - Arcotangente.exp - Esponenzialelog - Logaritmo naturalelog10 - Logaritmo (base 10)sqrt - Radice quadrataabs - Valore assolutomax - Massimomin - Minimo
Funzioni elementariFunzioni elementari
4
File .m File .m –– EditorEditor di file .mdi file .mUn file .m (M-file) è un programma riconoscibile da Matlab.
E’ un file di testo contenente codice MATLAB
In Matlab è presente un editor di files .m
Per accedere all’editor: File → New → M-file
Con il comando Save il file sarà salvato nella Current Directory
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
5
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
I vantaggi di un file .m sono notevoli. Infatti, si può:
§ Eseguire un algoritmo senza dover digitare ogni volta una lunga serie di comandi
§ Ottenere una documentazione del lavoro svolto§ Cambiare dati senza dover digitare nuovamente
tutti i comandi§ Scambiare programmi con altri utenti
Se si crea un file prova.m e si digita al prompt il comando
>>prova
Matlab eseguirà tutte le istruzioni contenute nel file.
6
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Creare il file risolvi.m con il quale risolvere il seguente sistema di equazioni algebriche lineari
Utilizzare il metodo dell’inversa.
59404475734
321
321
321
−=+−=++=++
xxxxxxxxx
EsercizioEsercizio
7
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
% Esempio di m-file. Il simbolo % permette di commentare ogni comando
% Cancello dalla memoria tutte le variabili e pulisco la command windowclear all; clc;
% Matrice A dei coefficienti delle incogniteA=[4 3 7; 7 4 4; 4 -9 1];
% Vettore colonna b dei termini notib=[5; 0; -5];
% Controllo se il sistema è ben-condizionato% Se l'indice rcond << 1 il sistema è mal-condizionatodisp('Indice rcond')disp(rcond(A))
% Ricavo il vettore colonna x delle incognitex=inv(A)*b;
% Mostro i risultatidisp('Valori delle incognite')disp(' x(1) x(2) x(3)')disp([x(1) x(2) x(3)])
8
§ Creare la matrice A[3*4]
§ Estrarre da A il vettore b
§ Creare il vettore bt (trasposta di b)
§ Calcolare s, prodotto scalare tra la prima riga di Ae il vettore bt
§ Risultato: s=115Anno Accademico 2009-2010.
Introduzione a MATLAB – Parte 2
File .m File .m –– Esercizio Esercizio –– esempio1.mesempio1.m
7 11 3 622 5 6 124 3 2 8
A⎡ ⎤⎢ ⎥= − −⎢ ⎥⎢ ⎥⎣ ⎦
{ }4 3 2 8b =4328
b
⎧ ⎫⎪ ⎪⎪ ⎪= ⎨ ⎬⎪ ⎪⎪ ⎪⎩ ⎭
9
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
% Esempio n.1 di utilizzo Matlab
% Ripulisco la Command Windowclc;
% Cancello dalla memoria tutte le variabiliclear all;
% Creazione della matrice AA=[7 11 3 6; 22 -5 -6 12; 4 3 2 8];
% Estrazione del vettore bb=A(3,:);
% Trasposta di bbt=b';
% Prodotto 1^riga di A per bts=A(1,:)*bt
10
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Immissione di dati da tastiera: inputImmissione di dati da tastiera: input>> a=input('Inserisci il numero desiderato= ')Inserisci il numero desiderato= 8
a =8
>> b=input('Inserisci la stringa desiderata= ', 's')Inserisci la stringa desiderata= Lezione
b =Lezione
>> c=input('Inserisci il vettore desiderato= ')Inserisci il vettore desiderato= [5 7 11]
c =5 7 11
11
§§ ciclo ciclo forfor ……. end. end
§§ ciclo ciclo ifif …… endend
§§ ciclo ciclo whilewhile …… endend
MATLAB come linguaggio MATLAB come linguaggio di programmazionedi programmazione
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
12
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Controllo di flusso: ciclo Controllo di flusso: ciclo forfor ……. end. end
Il ciclo for ha la seguente struttura:for variabile = espressione
istruzioniend
Il ciclo for consente di ripetere un certo numero di volte le istruzioni in esso contenute
for k=1:4y(k)=2^k;
end
>> y
y =
2 4 8 16
13
L‘uso eccessivo di cicli for può allungare i tempi di calcolo
Basta fare una verifica con le istruzioni sotto riportate. Il vettore V viene ricavato in due modi diversi: nel caso a) siusa un ciclo for; nel caso b) si usa il prodotto elemento per elemento.
Il risultato è lo stesso, ma i tempi di calcolo sonoestremamente diversi!
a) R=[1:1:1e+4]; I=[1:1:1e+4]; for k=1:1e+4; V(k)=R(k)*I(k); end;
b) R=[1:1:1e+5]; I=[1:1:1e+5]; V=R.*I;
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
14
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Controllo di flusso: ciclo Controllo di flusso: ciclo ifif …… endend
Il ciclo if ha la seguente struttura:if espressione
istruzioniend
Il ciclo if consente di eseguire istruzioni solo se unadeterminata espressione risulta vera
if k==2y=1;
elseif k==4y=0;
end
if k==2y=1;
end
if k>0y=1;
elsey=0;
end
15
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
% Esempio n.2 ciclo if … end
clc; clear all;
% Immissione dati da tastieraA=input('Inserisci un numero=');
if A==5disp('Ho immesso il numero 5');
elseif A==3disp('Ho immesso il numero 3');
elsedisp('Il numero immesso è diverso da 3 e diverso da 5');
end
16
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
== uguale~= diverso da< minore di<= minore o uguale> maggiore di>= maggiore o uguale
Per il controllo di flusso occorrono gli operatori relazionali
gli operatori relazionali più comuni sono:
17
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
I cicli possono essere innestati, uno dentro l’altro.
for variabile1 = espressione1for variabile2 = espressione2
istruzioniend
end
Esercizi: Creare una matrice unità [5×5]Creare una matrice [5×4] triangolare superiore
for k=1:3for j=1:2
a(j,k)=k*j;end
end
>> a
a =1 2 32 4 6
18
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Controllo di flusso: Controllo di flusso: whilewhile ifif …… endendIl ciclo if consente di eseguire un blocco di istruzioni finchèuna determinata espressione risulta vera. Quando l’espressionerisulta falsa, il flusso del programma esce dal ciclo.
num=10;eps=.1;k=0;while eps<num
k=k+1; a(k)=num;num=num/2;
end
>> a
a =
10.0 5.0 2.5 1.25 0.625 0.3125 0.1563
Il ciclo while ha la seguente struttura:while espressione
istruzioniend
19
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Il comando breakIl comando breakIl comando break consente di uscire rapidamente da un ciclofor o while. Se break è presente in un ciclo innestato, essoconsente l’uscita solo dal ciclo interno.
clear all; clc; k=0;while 1
n=input('Scrivi un numero= ')if n<0, break, endk=k+1;m(k)=n^2;
end
Il ciclo continua finchènon viene inserito un numero minore di zero
20
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Esercizio Esercizio –– esempio3.mesempio3.mCreare un file .m con cui valutare l’epsilon di macchina
L’epsilon di macchina ε è il numero più piccolo che sommato ad 1 restituisce un valore maggiore di 1 :
1 1ε + >
ε dà indicazioni sul massimo numero di cifre significative
In Matlab la costante eps contiene il valore dell’epsilon di macchina
2.2204 16eps e= −
21
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
% Esempio n.3 % Calcolo dell'epsilon di macchina nella forma 2^-k
% Ripulisco la Command Window e cancello le variabiliclc; clear all;
k=0;epsilon=1; % Comincio dal numero 2^0while 1~=1+epsilon
epsilon = epsilon/2; % Dimezzo il valore di epsilonk=k+1;
end
% Il ciclo è eseguito una volta in più del necessario% Correggo i valori di epsilon e di kepsilon=epsilon*2k=k-1; % epsilon=2^-k
22
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
EserciziEserciziCreare un file .m per risolvere il seguente sistema:
1. Usare il metodo dell’inversa2. Usare il metodo di Cramer (con un ciclo for .. end)
1 2 3
1 2 3
1 2 3
3 5 2 06 5 4
8 4 6 5
x x xx x xx x x
+ + =⎧⎪− + + =⎨⎪ + − =⎩
Soluzionex1-2.1275; x2= 2.1667; x3= -2.2255
23
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
EserciziEsercizi
§ Creare un file .m per risolvere il precedente sistema:
1. Usare il metodo di Gauss2. Usare la fattorizzazione LU *
*) Suggerimento: al prompt digitare il comando help lu
24
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
EserciziEsercizi1. Creare un file .m con cui valutare il più piccolo numero
xmin rappresentabile in Matlab nella forma 2^k
xmin è il numero per il quale si ha: min 02
x=
2. Creare un file .m con cui valutare il più grande numero xmax rappresentabile in Matlab nella forma 2^k
xmax è il numero per il quale si ha: max *2 infx =
xmin=4.9407e-324 xmax= 8.9885e+307
25
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
GraficiGrafici
Se x e y sono due vettori della stessa lunghezza, il comandoplot(x,y) permette di tracciare il grafico x-y
x=[-2*pi:pi/10:2*pi]; y=sin(x); plot(x,y)
Il comando plot permette di costruire grafici
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
26
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
plot(x,y,’s’)
Il comando plot consente di specificare il colore, lo stile, I marker della linea da tracciare. A tal fine, è necessario inserirela stringa ‘s’ :
la stringa ‘s’ ha la forma del tipo ‘s’=‘colore-marker-stile’
Ad esempio:
colore: b (blue)g (green)r (red)y (yellow)c (cyan)k (black)
marker: . (punto)o (cerchio)s (quadrato)+ (croce)* (stella)d (rombo)x (ics)
stile: - (continua): (puntata)-. (punto-linea)-- (tratteggiata)
27
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
plot(x,y,'ro--')
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
plot(x,y,'mv')plot(x,y,'k*:')
plot(x,y,'gd-')
28
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Il comando hold on consente di tracciare più curve su unostesso grafico
-8 -6 -4 -2 0 2 4 6 8-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
>> x=[-2*pi:pi/10:2*pi]; y=sin(x); plot(x,y)
>> z=cos(x); hold on; plot(x,z,'r+-')
29
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Possiamo inserire un titolo al grafico
>> title(Funzione seno')
Possiamo dare un’etichetta agli assi x e y
>> xlabel(‘x [rad]')>> ylabel(‘sin(x)')
MATLAB assegna automaticamente il range degli assi. Si può usare il comando axis([xmin xmax ymin ymax]) per scegliere il range in modo autonomo
>> axis([-2*pi 2*pi -1 1])
Il comando grid consente di mostrare una griglia
>> grid
30
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
-6 -4 -2 0 2 4 6-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1Funzione seno
x [rad]
sin(
x)
31
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Il comando Il comando subplotsubplotIl comando subplot permette di costruire più grafici nellastessa finestra
subplot(m,n,p)
Suddivide la finestra in una matrice (m×n) di grafici
Seleziona il grafico p-esimo
subplot(2,3,1)
Ottengo una finestra con (2 ×3) grafici e lavoro sul grafico 1
32
Anno Accademico 2009-2010. Introduzione a MATLAB – Parte 2
Creare il file usa_subplot.m con il quale tracciare su un unico grafico le funzioni: sin(x); cos(x); sin(x)^2; cos(x)^2; cos(x)*sin(x); cos(x)+sin(x)
0 5 10-1
-0.5
0
0.5
1Funzione sin(x)
0 5 10-1
-0.5
0
0.5
1Funzione cos(x)
0 5 100
0.2
0.4
0.6
0.8
1Funzione sin(x)2
0 5 100
0.2
0.4
0.6
0.8
1Funzione cos(x)2
0 5 10-0.5
0
0.5Funzione sin(x)*cos(x)
0 5 10-1.5
-1
-0.5
0
0.5
1
1.5Funzione sin(x)+cos(x)
33
Top Related