Documente Academic
Documente Profesional
Documente Cultură
1
Introducere in Matlab
1. Obiectivele lucrrii
Aceast lucrare de laborator este dedicat are ca scop familiarizarea studenilor cu
noiunile de baz MATLAB. Unele subiecte pot fi cunoscute de la alte discipline dar
sunt prezentate aici pentru a oferi o baz comun de plecare pentru toi studenii.
Acestea sunt noiuni importante pentru a putea aborda cu succes subiecte legate de
procesarea imaginilor,
n final, studenii trebuie s fie capabili s utilizeze comenzile de baz MATLAB,
s tie s genereze vectori i matrici, s efectueze operaii cu numere i matrici, s
seteze spaiul de lucru i s foloseasc facilitile MATLAB pentru reprezentri
grafice.
2. Desfurarea lucrrii
Ce este MATLAB?
MATLAB este un limbaj de nalt performan i un software folosit pentru
implementarea unor programe cu aplicaii n tehnic. El permite:
efectuarea de calcule matematice
dezvoltarea de algoritmi
modelarea i simularea sistemelor
analiza i vizualizarea datelor
generarea unor reprezentri grafice tiinifice i inginereti
MATLAB este un sistem interactiv (toate datele sunt ntotdeauna n memorie) cu
urmtoarele caracteristici:
elementul de baz pentru reprezentarea datelor este un tablou
nu este nevoie de declaraii sau de funcii prototip pentru a forma un tablou
toate datele sunt reprezentate n dubl precizie
n modul script sau n modul linie de comand, datele sunt ntotdeauna accesibile
i n memorie
Comenzi MATLAB de baz
Unde va aflai:
Folosii comanda pwd pentru a afla unde va aflai, n calculatorul pe care lucrai,
Folosii comanda dir pentru a lista fiierele din directorul curent,
Folosii comanda cd pentru a schimba directorul,
Apoi, comutai la directorul principal pentru a putea salva rezultatele acestei lucrri
de laborator.
Comanda help
Putei obine informaii i indicaii legate de toate comenzile i funciile MATLAB
(atenie, n MATLAB literele mari i mici sunt diferite; sistemul este case sensitive)
prin:
>> help comand (funcie)
De exemplu, tastai
>> help help
i citii ce apare pe ecranul monitorului Ar trebui s obinei multe informaii despre
cum s gsii informaii legate de anumite subiecte. Dac Limba Englez va face
probleme, nu va sfiii s cerei ajutor de la cadrul didactic ndrumtor.
De exemplu, dac suntei interesai de funcia cosinus, tastai:
>> help cos
Exerciiul 1.1 Folosii comada help pentru a v informa despre cel puin trei funcii
folosite n Automatic, Electronic, Procesarea Imaginilor, Statistic Matematic etc.
Dac apsai sgeile up down de la tastatur, vei putea afia comenzile
anterioare.
Comanda lookfor
Dac nu suntei siguri care este numele comenzii MATLAB pe care dorii s o
folosii, comanda lookfor v ofer soluia.
De exemplu, dac dorii s cutai funcia cosinus sau alte funcii legate de aceasta,
tastai:
>> lookfor cosine
Ca rspuns, MATLAB va afia toate funciile care au legtur cu cosine
mpreun cu o scurt descriere:
ACOS Inverse cosine.
ACOSH Inverse hyperbolic cosine.
COS Cosine.
COSH Hyperbolic cosine.
TFFUNC time and frequency domain versions of
modulated Gaussian pulse.
DCT2 Compute 2-D discrete cosine transform.
DCTMTX Compute discrete cosine transform matrix.
DCTMTX2 Discrete cosine transform matrix.
IDCT2 Compute 2-D inverse discrete cosine transform.
CHIRP Swept-frequency cosine generator.
DCT Discrete cosine transform.
cosine
n continuare, tastai help cos pentru a obine detalii despre funcia cos:
>> help cos
Exerciiul 1.2 Explicai detaliile pe care le-ai obinut pentru funcia cos.
Exerciiul 1.3 Repetai pentru funcia arctg.
Dac apsai sgeile up down de la tastatur, vei putea afia comenzile
anterioare.
Formarea unui vector sau a unei matrici
Dup cum am spus mai nainte, tablourile (matricile i vectorii) sunt elementele de
baz ale unui program MATLAB. MATLAB vede matricile la fel cum alte limbaje de
programare vd numerele i poate efectua operaii n matrici n mod direct, fr
folosirea unor bucle, proprietate care se va dovedi foarte util pentru procesarea
imaginilor.
Pentru a afla mai multe despre vectori i matrici, tastai urmtoarele instruciuni,
observai i comentai rezultatele.
Tastai:
>> x = [1 2 3 4 5 4 3 2 1];
>> who
ofer indicaii depre toate matricile/toi vectorii care exist n spaiul de lucru
(workspace), iar
>> whos
va oferi mai multe detalii despre aceste matrici/aceti vectori.
Exerciiul 1.4 Descriei spaiul de lucru din acest moment i explicai ce conine
(tipuri de date, caracteristici etc.).
n continuare, tastai
>> y = [6; 7; 8; 9; 0; 9; 8; 7; 6];
pentru a crea un nou vector, numit y, de tip 9 x 1 (vector coloan).
Observai caracterul ; la sfritul instruciunii. n acest caz, MATLAB nu va afia
vectorul y.
Apoi,
>> y'
va avea ca efect afiarea transpusei lui y.
Instruciunea
>> z = [1 2 3; 4 5 6; 7 8 9; 0 1 2]
va conduce la crearea unei matrici z.
Exerciiul 1.5 Ce este vectorul transpus al unui vector dat? Care este matricea z?
Operatori
Operatorul :
Metoda cea mai bun pentru a defini rapid anumii vectori este folosirea
operatorului : De exemplu, tastai:
>>
>>
>>
>>
>>
>>
a
b
c
d
e
f
=
=
=
=
=
=
0:10
-5:10
0:2:10
10:-2:-5
0:0.01:4.2
-pi:0.01:pi
/
*
^
plus
minus
mprire
nmulire
exponent
3^2
y'
x+y'
x*y
3*x
>> x.*x
>> x*x
Exerciiul 1.9 Explicai efectul fiecrei instruciuni. Scriei i explicai rezultatele
obinute.
Apoi, folosind comanda whos, vei putea observa i explica o muime de variabile
n spaiul de lucru.
Dac tastai clear i whos din nou, vei observa c spaiul de lucru a fost ters.
Matrici i operatori
Tastai:
>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
>> sum(A) % afieaz suma coloanelor matricii A.
Ca rezultat, pe ecran se va afia:
>> 34 34 34 34
Exerciiul 1.10 Demonstrai c rezultatul obinut este corect.
Investigai n continuare:
>> sum(sum(A))
>> A % Transpusa conjugatei (pentru numere complexe), n caz contrar, transpusa.
>>sum(A) % Suma liniilor matricii A (coloanele lui A).
Exerciiul 1.11 Demonstrai c rezultatul obinut este corect.
Determinai valoarea elementului (4,2) din matricea A:
>> A(4,2)
Operaii cu matrici
+
*
^
.
\
/
Adunare
Scdere
nmulire
Ridicarea la putere
Traspusa (real) sau transpusa conjugat (complex)
Transpusa (real sau complex)
mprirea la stnga
mprirea la dreapta
mprirea matricilor
Dac A este o matrice ptrat inversabil iar b este un vector coloan compatibil cu
A, sau un vector linie compatibil cu A, atunci
x = A\b este soluia ecuaiei A * x = b
x = b/A este soluia ecuaiei x * A = b
Operatorii * ^ \ i / pot fi folosii precedai de .
Tastai:
>> B=[1 2;3 4]
>> B*B
>> B.*B
Observai i explicai diferena.
Exerciiul 1.16 Scriei matricea B. Explicai fiecare element din utimile trei
instruciuni i scriei rezultatul. Demonstrai c rezultatul obinut este corect.
Funcii matriciale speciale
Eye
Zeros
Ones
Triu
Tril
Rand
>> zeros(2,3)
>> A=rand(3)
>> triu(A)
Exerciiul 1.17 Explicai fiecare element din utimile trei instruciuni i scriei
rezultatul. Demonstrai c rezultatul obinut este corect.
Matricile pot fi formate i din blocuri.
De exemplu:
>> A=rand(3);
>> B=[A, zeros(3,2); zeros(2,3),eye(2)];
Exerciiul 1.18 Explicai fiecare element din utimile dou instruciuni i scriei
rezultatul. Demonstrai c rezultatul obinut este corect.
Spaiul de lucru i salvarea rezultatelor
Pe msur ce introducei comezi i instruciuni MATLAB, datele sunt ntotdeauna
n spaiul de lucru i pot fi salvate. Spaiul de lucru poate fi neles ca fiind o zon
asociat de memorie accesibil din linia de comand.
Pentru a vedea spaiul de lucru, se folosete whos
Pentru a terge spaiul de lucru, se folosete clear
Pentru a salva spaiul de lucru, se folosete save name. Folosii help save
pentru a afla mai multe despre save.
Pentru a ncrca spaiul de lucru, se folosete load name. Folosii help load
pentru a afla mai multe despre load.
Reprezentri grafice n MATLAB
Grafice bidimensionale
Comanda plot permite reprezentarea grafic a numerelor dintr-un tablou n funcie
de numerele dintr-un al doilea tablou de aceeai lungime.
De exemplu, tastai i explicai efectul fiecrei comenzi i rezultatul global:
>>
>>
>>
>>
>>
>>
t=0:0.01:2;
temp=exp(-t);
plot (t,temp)
xlabel('Timp')
ylabel('Temperatura')
title('Temperaturi tranzitorii')
Exerciiul 1.19 Explicai fiecare element din utimile instruciuni i explicai efectul
instruciunilor asupra rezultatului final. De fapt, care este rezultatul final?
x=0:pi/16:2*pi;
y=sin(x);
plot(x,y,'*..')
xlabel('x')
ylabel('sin(x)')
Exerciiul 1.20 Explicai fiecare element din utimile instruciuni i explicai efectul
instruciunilor asupra rezultatului final. De fapt, care este rezultatul final?
Reprezentri grafice multiple n aceeai fereastr
Tastai i explicai rezultatele:
>>
>>
>>
>>
>>
>>
>>
>>
x=0:pi/16:2*pi;
y1=sin(x);
y2=cos(x);
plot(x,y1,'* -',x,y2,'r s -')
xlabel('x')
ylabel('sin(x) , cos(x)')
title(Functii trigonometrice')
legend ('sin','cos')
Exerciiul 1.21 Explicai fiecare element din utimile instruciuni i explicai efectul
instruciunilor asupra rezultatului final. De fapt, care este rezultatul final?
Subgrafice
Pot fi create tablouri grafice folosind comanda subplot. De exemplu:
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
x=0:pi/16:2*pi;
y1=sin(x);
y2=cos(x);
subplot(2,1,1)
plot(x,y1,'* -')
xlabel('x')
ylabel('sin(x)')
subplot(2,1,2)
plot(x,y2,'r s -')
xlabel('x')
ylabel('cos(x)')
Exerciiul 1.22 Explicai fiecare element din utimile instruciuni i explicai efectul
instruciunilor asupra rezultatului final. De fapt, care este rezultatul final?
ntrebri i probleme
a. Ce este transpusa unei matrici? Ce este adjuncta unei matrrici? Ce este inversa
unei matrici i cum se calculeaz? Cum se adun, scad, nmulesc sau mpart dou
matrici? Dai exemple pentru fiecare.
b. Explicai formatul i exemplificai modul de folosire al instruciunilor: Hold,
Grid, Axis, Ezplot, Gtext, Ginput.
c. Aplicai noiunile nvate n aceast lucrare pentru a elabora i indica o
succesiune de instruciuni/comenzi care s conduc la un rezultat. Enunai problema,
prezentai modul de rezolvare, explicai rezultatul i artai c rezultatul este corect.
d. Efectuai urmtoarele nmuliri matriciale n MATLAB i explicai de ce
rspunsul este corect.
3 4 1
2
1 2 0
2 0
1
0
5
1 2
21.5 3 1 2 5 4
2 1 7 0
4 9 2
e. Un exemplu de funcie care ar fi foarte greu de reprezentat grafic fr un
calculator este Lab1 Iugaza
F ( x) = x xx ( x x ) x
Indicai succesiunea de instruciuni/comenzi MATLAB pentru a reprezenta grafic
aceast funcie. Tiprii i explicai rezultatul.
Observaie. ezplot folosete 2 x 2 . Acest interval nu este potrivit pentru
funcia dat. O alegere mai bun este 0 x 2
nainte
1.92
0.05
2.43
0.02
0.09
0.85
0.06
Dup
1.92
2.43
0.85
0
0
0
0