Sunteți pe pagina 1din 38

MATLAB.

TUTORIAL.

Februarie, 2009
Prelucrare după: Huda Arnaout
Yeran Soukiassian
Conţinut.
 Introducere.
 Mediu MATLAB.
 Utilizarea help-ului.
 Declararea variabilelor.
 Vectori, Matrice şi Algebră Lineară.
 Funcţii Matematice şi Aplicaţii.
 Grafică MATLAB.
 Programare MATLAB.
 M-fişiere.
 Utilizarea funcţiilor predefinite.
Introducere. – LAB1
 MATLAB-prezentare
 MATLAB este un pachet de programe care combină capacităţi
puternice de calcul cu un mediu grafic adecvat şi care
realizează o sculă extrem de utilă inginerului şi nu numai.

 MATLAB este destinat pentru MATrix LABoratory.


• Sistemul a fost realizat în principal pentru a asigura algoritmi numeric stabili pentru lucru cu
matrice.

 Mediul MATLAB asigură utilizatorului:


• controlul variabilelor
• importul şi exportul datelor
• calcul performant
• reprezentări grafice 2-D şi 3-D.
• controlul şi dezvoltarea fişierelor MATLAB.
Ferestre grafice.
 Fereastra Grafică
 Afişează grafice.
 Afişează rezultate în urma comenzilor date
de utilizator.
 Editorul MATLAB
 Creează şi editează scripturi necesare
implementării unor m-fişiere.
Utilizarea HELP-ului.

 Lansarea help-ului se va face tastând în fereastra de


lucru una din comenzile:
 help – listează conţinutul help-ului
 help cuvânt – lansează help-ul pentru cuvânt.
 help comandă– lansează help-ul pentru comandă
 help help – oferă informaţii asupra utilizării help-ului
 helpwin – deschide o fereastră separată pentru a lucra în mediul
window .
 lookfor keyword – Caută toate M-fişierele pentru keyword
Declararea variabilelor.
 Numele unei variabile:
 Trebuie să înceapă cu o literă
 Poate conţine numai litere, cifre, şi simbolul “_”
 Matlab distinge majusculele, adică one & One sunt variabile
diferite.
 Matlab recunoaşte primele 31 de caractere din numele variabilei.
 Valoarea unei variabile:
 Variabilă = număr;
 Variabilă = expresie;
 Exemple:
>> tutorial = 1234;
>> tutorial = 1234
NOTE: dacă asociem ”;”
tutorial = la sfârşitul liniei de
1234
comandă, rezultatul nu
mai este afişat.
Definirea variabilelor (cont.)
 Variabile speciale:
 ans : nume dat implicit variabilei rezultat
 pi: π = 3.1415926…………
 eps: ∈ = 2.2204e-016, zeroul maşinii
 Inf sau inf : ∞, infinit
 NaN sau nan: not-a-number
 Comenzi pentru testarea variabilelor:
 who: listează numele variabilelor definite
 whos: listează numele şi dimensiunile variabilelor definite
 clear: şterge toate variabilele declarate,şterge valorile implicite
ale variabilelor speciale.
 clear nume: şterge variabila nume
 clc: şterge fereastra comenzilor
 clf: şterge figura curentă.
Vectori, Matrice şi Algebră Lineară.
 Vectori.
 Operaţii cu celule.
 Matrice.
 Soluţionarea Sistemelor de ecuaţii
liniare.
Vectori
 Un vector linie este creat în MATLAB prin tastarea succesivă,paranteza dreaptă din
stânga, valorile separate prin spaţiu sau virgule şi paranteza dreaptă din dreapta. Pentru a
introduce un vetor coloană valorile sunt separate prin punct şi virgulă.
 Example:
>> x = [ 0 0.25*pi 0.5*pi 0.75*pi pi ]
x=
0 0.7854 1.5708 2.3562 3.1416
>> y = [ 0; 0.25*pi; 0.5*pi; 0.75*pi; pi ] x is a row vector.
y=
0
0.7854
1.5708 y is a column vector.
2.3562
3.1416
Vectori (continuare)
 Poziţia unui element al vectorului – Se stabileşte asociind întregul închis
într-o paranteză rotundă.
 Exemplu:
>> x(3)
ans =
1.5708  3lea element din vectorul x
 Notarea bloc facilitează testarea vectorului.Notarea bloc se realizează prin:
(indicele destart : increment : indicele de capăt)
Forma scurtă (start:stop) implică un increment 1.
 Example:
>> x(1:3)
ans =
0 0.7854 1.5708  Al 1lea până la al 3lea element al vectorului x

NOTĂ: MATLAB lansează startul cu 1.


Vectori (continuare)
Comenzi utile
x = start:stop Creează vectorul linie x începând cu start, indexând
cu unu, până la stop.
x = start:increment:stop Creează un vector linie x începând cu start,
incrementând cu increment până la stop.
linspace(start,stop,număr) Creează un vector linie x începând cu start, sfârşind
cu stop având un număr de elemente.
length(x) Întoarce lungimea vectorului x
y = x’ Vectorul x transpus
dot (x, y) Întoarce produsul scalar al vectorilor x şi y.
Operaţii cu celule.
 Operaţii celulă-scalar.
Pentru adunare,scădere,înmulţire sau împărţire scalarul
acţionează asupra fiecărui element al celulei.
Example:

>> f = [ 1 2; 3 4]
f=
1 2
3 4
>> g = 2*f – 1
Fiecare element din celulă este
g=
1 3 multiplicat cu 2 şi apoi se extrage1.
5 7
Operaţii cu celule. (continuare)
 Operaţii element cu element.
Operaţie Forma algebrică MATLAB
Adunare a+b a+b
Scădere a–b a–b
Înmulţire axb a .* b
Împărţire a÷b a ./ b
Exponenţiere ab a .^ b

 Exemplu:
>> x = [ 1 2 3 ];
>> y = [ 4 5 6 ]; Fiecare element din x este
>> z = x .* y
z= multiplicat cu corespunzătorul din y
4 10 18
Matrice
 O matrice este o celulă 2-dimensională, având mai multe linii şi mai multe coloane.
Înscrierea unei matrici se face astfel:
 Marcarea începutului se face prin [, şi se sfârşeşte cu ]
 Separarea elementelor dintr-o linie se face prin spaţiu sau virgulă.
 Punct şi virgulă sau enter separă elementelor dintr-o coloană.

•Example:
A o matrice m x n. >> f = [ 1 2 3; 4 5 6]
f=
1 2 3
4 5 6
>> h = [ 2 4 6
1 3 5]
h=
2 4 6
Diagonala 1 3 5

principală
Matrice (continuare)
 Selectarea elementelor unei matrici:
-- numematrice(linie, coloană)
-- un bloc de selecţie poate fi utilizat pentru a selecta mai multe
linii sau coloane.
 Exemplu:
Date:
>> f(2,3) f=
ans = 1 2 3
6 4 5 6
>> h(:,1) h=
ans = 2 4 6
1 3 5
2
1
Matrice (continuare)
Comenzi uzuale:
zeros(n) Întoarce o matrice n x n cu elemente nule
zeros(m,n) Întoarce o matrice m x n cu elemente nule.

ones(n) Întoarce o matrice n x n cu elemente unitate


ones(m,n) Întoarce o matrice m x n cu elemente unitate

size (A) Pentru matricea A cu dimensiunea m x n, întoarce


un vector linie [m,n] ce conţine numărul de linii şi
coloane.

length(A) Întoarce valoarea maximă dintre numărul de linii


şi coloane ale lui A.
Matrice (continuare)
Comenzi uzuale
Transpunerea B = A’
Matricea identitate eye(n)  întoarce matricea identitate de ordin n
eye(m,n)  întoarce o matrice m x n cu unu pe prima
diagonală şi zero în rest.
Adunarea şi scăderea C=A+B
C=A–B
Multiplicarea scalară B = α*A, unde α este un scalar .
Înmulţirea matricială C = A*B
Matricea inversă B = inv(A), A trebui să fie pătrată.
rank (A)  întoarce rangul matricei A.
Ridicarea la putere B = A.^2  ridică la pătrat fiecare element din A
C = A * A  calculează A*A, A pătrată.
Determinant det (A), A pătrată.
A, B, C sunt matrice, şi m, n, α scalari.
Soluţionarea sistemelor liniare. – LAB 2
 Exemplu: fie sistemul algebric în necunoscutele (x1, x2, x3):
3x1 + 2x2 – x3 = 10
-x1 + 3x2 + 2x3 = 5
x1 – x2 – x3 = -1

Fie :
3 2 1  x1  10 
A = − 1 3 2  x =  x2  b= 5 
     
 1 − 1 − 1  x3  − 1

Sistemul este descris de:

Ax = b
Soluţia sistemului de ecuaţii liniare
(continuare)
 Soluţionare prin inversă:  Soluţionare prin diviziune matricială:
Ax = b Soluţia ecuaţiei
A-1Ax = A-1b Ax = b
x = A-1b Poate fi calculată utilizând diviziunea la dreapta.
 MATLAB:
>> A = [ 3 2 -1; -1 3 2; 1 -1 -1];  MATLAB:
>> b = [ 10; 5; -1]; >> A = [ 3 2 -1; -1 3 2; 1 -1 -1];
>> x = inv(A)*b >> b = [ 10; 5; -1];
x= >> x = A\b
-2.0000 x=
5.0000 -2.0000
-6.0000 5.0000
Rezultat: -6.0000
x1 = -2, x2 = 5, x3 = -6 Rezultat:
NOTĂ: x1 = -2, x2 = 5, x3 = -6
Diviziunea la stânga: A\b  b ÷ A diviziune la dreapta: x/y  x ÷ y
Funcţii matematice şi aplicaţii.
 Reprezentarea şi prelucrarea
semnalelor.
 Polinoame.
 Descompunerea în fracţii elementare.
Reprezentare şi procesarea
semnalelor.
 Semnale sinusoidale:
x(t ) = 2 cos 2πt
y (t ) = 2 cos[ 2π (t − 0.125)]
z (t ) = 2 sin 2πt

 Exemple:
t = linspace (-1, 1, 101);
x = 2*cos(2*pi*t);
y = 2*cos(2*pi*(t-0.125));
z = 2*sin(2*pi*t);
Polinoame.
 În MATLAB polinoamele sunt reprezentate prin vectorul
coeficienţilor.
 Considerăm următorul polinomul:
A(s) = s3 + 3s2 + 3s + 1
 Dacă s este scalar: utilizăm operaţia scalară
 A = s^3 + 3*s^2 + 3*s + 1;
 Dacă s este vector sau matrice: utilizăm operaţii element cu
element.
 A = s.^3 + 3*s.^2 + 3.*s + 1;
 funcţia polyval(a,s): evaluează polinomul cu coeficienţi în vectorul
a pentru valori ale lui s.
Polnoame (continuare)

 Example:
>> s = linspace (-5, 5, 100);
>> coeff = [ 1 3 3 1];
>> A = polyval (coeff, s);
A(s) = s3 + 3s2 + 3s + 1 >> plot (s, A),
>> xlabel ('s')
>> ylabel ('A(s)')
Polinoame (continuare)
Operaţii Comenzi MATLAB Descriere
Adunare c=a+b Suma polinoamelor (a,b au aceeaşi dimensiune)
Multiplicare cu b = 3*a Multiplică polinomul a cu 3
scalar
Multiplicare c = conv(a,b) Întoarce vectorul polinomului produs.
polinomială
Împărţirea [q,r] = deconv(a,b) Întoarce coeficienţii polinomului cât q şi vectorul coeficienţilor rest
polinoamelor r.
Derivata polyder(a) Întoarce coeficienţii polinomului derivat
polyder(a, b) Întoarce coeficienţii polinomului obţinut prin derivarea produsului
polinoamelor a şi b.
[n,d]=polyder(b,a) Derivează fracţia raţională b/a.

Determinare roots(a) Determină rădăcinile polinomului a


rîdăcinilor
Find Polynomials poly(r) Determină polinomul cu rădăcinile specificate în r.
Descompunerea în fracţii
elementeare.(DFE). – LAB3

B ( s ) , unde B(s) şi A(s) sunt polinoame.


H (s) =
A( s )

H(s) poate fi reprezentat în forma:

c1 c c
H (s) = + 2 + ... + n
s − r1 s − r2 s − rn
DFE (continuare)
Exemplu (Rădăcini reale şi diferite):
s+2 c1 c2 c3
H (s) = = + +
s 3 + 4 s 2 + 3s + 0 s − r1 s − r2 s − r3

MATLAB:
>> b = [ 1 2];
NOTĂ: ultimul zero reprezintă coeficientul
>> a = [ 1 4 3 0];
>> [c,r] = residue (b, a) zero al polinomului
c=
c1
-0.1667
c2
Rezultat:
-0.5000
0.6667 c3 1/ 6 1/ 2 2 / 3
r= H ( s) = − − +
-3 r1 s + 3 s +1 s
-1 r2
0 r3
Grafică MATLAB. – LAB4
 Pentru mai multe informaţii , help graph2d
funcţia plot () creeză o fereatsră
 Reprezentarea unui punct: definită ca figură.
>> plot ( numevariabilă, ‘simbol’)
 Exemplu : Reprezentrea unui număr complex
>> z = 1 + 0.5j;
>> plot (z, ‘.’)

Comenzi pentru axe:


comenzi descriere

axis ([xmin xmax ymin ymax]) Valori minime şi maxime ale axelor
axis square Grafic în pătrat.
axis equal Scalare egală pe ambele axe.
axis normal Reconfigurează axele în pătrat cu scalare identică
axis (auto) Fixare implicită
Grafică Matlab (continuare)
 Reprezentarea graficelor:
 plot (x,y) – generează dependenţa grafică y=f(x)
 semilogx (x,y) – generează dependenţa grafică z=f(x) cu x marcat logaritmic iar y liniar.
 semilogy (x,y) – generează dependenţa grafică z=f(x) cu x marcat liiar iar y logaritmic.
 loglog(x,y) – trasează graficul utilizând o scalare logaritmică atât pentru x cât şi pentru y.
 Reprezentări multiple:
 plot (x, y, w, z) – putem reprezenta mai multe curbe pe un acelaşi grafic utilizând argumente multiple în
linia de comandă. Variabilele x, y, w, şi z sunr vectori. Sunt trasate două curbe: y vs. x, şi z vs. w.
 legend (‘string1’, ‘string2’,…) – permite prezentarea semnificaţiei curbelor trasate.
 exerciţiu: tastaţi help legend pentru clarificări.
 Figuri multiple:
 figure (n) – utilizat pentru a crea mai multe ferestre grafice.Se introduce comanda înainte de comanda
plot().
 Close(nume) –închide fereastra nume.
 close all – închide toate ferestrele.
 Subplots:
 subplot (m, n, p) – împarte fereastra într-o reţea m x n, p specifică reprezentarea
curentă.
Crafică MATLAB (continuare)
 Exemplu: (funcţia polinomială)
Reprezentăm funcţia polinomială utilizând scalare linear/lineară, log/lineară , scalarea
linear/log şi log/log :
y = 2x2 + 7x + 9

% 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;
Grafică MATLAB (continuare)
Grafică MATLAB (continuare)
 Adăugarea de elemente noi pe un grafic existent:
 Comanda hold se utilizează pentru a adăuga linii sau puncte pe un grafic.
 hold on – permite reprezentări noi peste graficele anterior trasate. După caz se
realizează automat o rescalare.
 hold off – elimină posibilitatea suprapunerii graficelor (opţiune implicită)
 Caroiaj şi axe:

Command Description
grid on Adaugă pe grafic o reţea.
grid off Elimină reţeaua (implicit)
grid Comută regimul grid
title (‘text’) Reprezintă titlul înscris în partea de sus a figurii
xlabel (‘text’) Marchează axa orizontală.
ylabel (‘text’) Marchează axa verticală.
text (x,y,’text’) Adaugă conţinutul text pe locaţia (x,y) impusă.
Comenzi suplimentare pentru
reprezentări grafice.

Colorarea punctelor pe curbă Markeri pentru puncte Stilul de linie


Symbol Color Symbol Marker Symbol Line Style
y yellow . • – solid line
m magenta o ° : dotted line
c cyan x × –. dash-dot line
r red + + –– dashed line
g green * ∗
b blue s □
w white d ◊
k black v ∇
^ ∆
h hexagram
Programare MATLAB.
 Controlul condiţionărilor
 Cicluri
Controlul condiţionărilor.
 Sintaxa operatorului if:
if expresie logică
comenzi
end
 Exemplu:
if d <50
contor = contor+ 1;
disp(d);
if b>d
b=0;
end
end
 Exemplu: (else şi elseif)
if temperatura > 100
disp (‘Naşpa – funcţionare proastă.’)
elseif temperatura > 90
disp (‘Funcţionare bună.’);
else
disp (‘Frig – opreşte instalaţia.’)
end
Controlul condiţionărilor.
(continuare)
 Sintaxa operatorului switch :
switch expresie logică
case rezultatul condiţionării 1
comandă
case rezultatul condiţionării 2
comandă
otherwise
comandă
end
 Exemplu:
switch interval < 1
case 1
xinc = interval /10;
case 0
xinc = 0.1;
end
Cicluri.
•Exemplu (ciclu for):
 Ciclu for
for t = 1:5000
for variabila = expresie y(t) = sin (2*pi*t/10);
comanda end
end •Exemplu (ciclu while):
EPS = 1;
 Ciclu while while ( 1+EPS) >1
while expresia EPS = EPS/2;
comanda end
EPS = 2*EPS
end

 comanda break
break – folosită pentru ieşirea din ciclu.
M-Fişiere.
Comenzile pot fi rulate în fereastra de lucru Matlab. Este cu mult mai
comod de a elabora m-fişiere.
 M-fişierele sunt fişiere text ce conţin o succesiune
de comenzi Matlab.
 MATLAB poate deschide şi executa fişierele exact
exact ca şi cum ar fi introduse de la tastatură.
 Pentru a rula un fişier.m este suficient să
introducem numele fişierului în fereastra de lucru
(asigurându-ne că directorul este corect setat)
Toate comenzile Matlab sunt m-fişiere.
Fişiere funcţie.
 Sintaxa unui fişier funcţie:
function [Variabile de ieşire] = nume_funcţie (variabile de intrare);

NOTĂ: numele funcţiei este de


dorit să fie acelaşi cu numele
fişierului pentru a evita confuzii.
 Lansarea funcţiei dorite:
-- funcţia este lansată prin numele fişierului şi nu al funcţiei
definite.
-- în cadrul funcţiei pot utiliza numai funcţii predefinite înscrise ca
m-fişiere.
 Comments:
-- Primele linii pot fi introduse comentarii care pot fi apelate prin
help.