Sunteți pe pagina 1din 161

Matlab

1
1 Lansarea aplicaiei Matlab...........................................................................................5
1.1 Fereastra aplicaiei Matlab...................................................................................5
1.2 Fereastra editorului Matlab..................................................................................8
2 Elementele limbajului Matlab...................................................................................12
2.1 Constante............................................................................................................12
2.2 Variabile.............................................................................................................12
2.3 Operatori aritmetici. Expresii aritmetice............................................................12
2.4 Operatori relaionali. Expresii relaionale..........................................................14
2.5 Operatori booleeni. Expresii booleene...............................................................14
2.5.1 Operatori booleeni ce conecteaz expresii relaionale................................14
2.5.2 Operatori booleeni ce acioneaz asupra scalarilor i elementelor matricelor
..............................................................................................................................15
2.6 Prioritile i asociativitatea operatorilor...........................................................15
2.7 Operaii cu iruri de caractere............................................................................16
2.8 Vectori i matrice...............................................................................................17
2.8.1 Operaii cu vectori i matrice......................................................................17
2.8.2 Generarea vectorilor....................................................................................18
2.8.3 Lucrul cu matrice mprite n blocuri.........................................................19
2.8.4 Concatenarea matricelor..............................................................................19
2.8.5 Funcii ce creaz matrice speciale...............................................................20
2.8.6 Modificarea dimensiunilor matricelor.........................................................21
2.9 Structuri..............................................................................................................21
2.10 Funciile load i save.......................................................................................22
2.11 Introducerea datelor de la tastatur.................................................................22
2.12 Funcii pentru lucrul cu iruri de caractere......................................................22
2.13 Formatarea rezultatelor....................................................................................24
2.14 Celule. Tablouri de celule...............................................................................24
3 Instruciuni Matlab....................................................................................................28
3.1 Instruciunea for................................................................................................28
3.2 Instruciunea while............................................................................................29
3.3 Instruciunile continue i break.........................................................................30
3.4 Instruciunea if...................................................................................................30
3.5 Instruciunea switch...........................................................................................31
4 Funcii........................................................................................................................32
4.1 Definirea funciilor.............................................................................................32
4.2 Instruciunea global............................................................................................32
4.3 Variabile handle de funcii.................................................................................33
4.4 Vectorizarea funciilor........................................................................................37
4.5 Aplicarea funciilor asupra tablourilor de celule................................................37
5 Reprezentri grafice..................................................................................................39
5.1 Reprezentarea curbelor plane.............................................................................39
5.2 Editarea unei figuri.............................................................................................46
5.3 Modificarea interactiv a proprietilor obiectelor grafice.................................47
5.3.1 Modificarea proprietilor axelor................................................................48
5.3.2 Modificarea proprietilor curbelor.............................................................50
5.4 Modificarea programat a proprietilor obiectelor grafice...............................54
5.4.1 Obiectul Root..............................................................................................55
5.4.2 Obiectul Figure............................................................................................55
5.4.3 Obiectul Axes..............................................................................................56
5.4.4 Obiectul Line...............................................................................................57
2
5.4.5 Obiectul Text...............................................................................................57
5.4.6 Modificarea proprietilor obiectelor grafice..............................................61
6 Transformata Fourier discret...................................................................................66
7 Integrarea ecuaiilor difereniale ordinare.................................................................69
8 Filtre numerice..........................................................................................................73
9 Rezolvarea ecuaiilor algebrice neliniare..................................................................75
10 Interpolarea funciilor..............................................................................................78
11 Operaii cu polinoame.............................................................................................79
12 Interfee grafice.......................................................................................................80
12.1 Construirea unei interfee grafice cu aplicaia GUIDE...................................80
12.1.1 Descrierea aplicaiei GUIDE.....................................................................80
12.1.2 Crearea interfeei grafice...........................................................................85
12.1.3 Alinierea componentelor...........................................................................87
12.1.4 Modificarea proprietilor obiectelor grafice............................................88
12.2 Programarea interfeei grafice.........................................................................94
12.2.1 Organizarea interfeei grafice....................................................................94
12.2.2 Programarea interfeei grafice.................................................................100
12.2.3 Adugarea unor grafice la interfa.........................................................102
12.2.4 Modificarea proprietilor obiectelor grafice la rularea programului.....107
12.2.5 Poziionarea unui punct pe o curb.........................................................113
12.2.6 Introducerea datelor cu casete de dialog.................................................120
13 Calcul simbolic......................................................................................................124
13.1 Definirea variabilelor i funciilor simbolice................................................124
13.2 Substituii......................................................................................................126
13.3 Reprezentarea simbolic a numerelor..........................................................128
13.4 Definirea de variabile simbolice reale i complexe.......................................129
13.5 Matrice simbolice..........................................................................................130
13.6 Crearea de funcii abstracte...........................................................................133
13.7 Reprezentarea grafic a funciilor.................................................................133
14 Funcii pentru calcule simbolice............................................................................137
14.1 Derivarea.......................................................................................................137
14.2 Limite de funcii............................................................................................139
14.2.1 Calculul limitelor de funcii....................................................................139
14.2.2 Calculul limitelor laterale........................................................................140
14.3 Integrarea.......................................................................................................141
14.3.1 Calculul integralei nedefinite..................................................................141
14.3.2 Calculul integralei definite......................................................................141
14.3.3 Calculul integralelor ce depind de un parametru.....................................143
14.4 Calculul sumelor............................................................................................143
14.5 Dezvoltarea n serie Taylor...........................................................................144
14.6 Simplificri i substituii...............................................................................145
15 Operaii cu polinoame simbolice..........................................................................147
16 Algebr liniar simbolic.....................................................................................150
17 Rezolvarea simbolic a ecuaiilor algebrice..........................................................152
18 Rezolvarea simbolic a ecuaiilor difereniale ordinare .......................................155
19 Transformri integrale...........................................................................................157
19.1 Transformata Fourier.....................................................................................157
19.2 Transformata Laplace....................................................................................158
19.3 Transformata Z..............................................................................................159
3
4
1 Lansarea aplicaiei Matlab
Lansarea aplicaiei Matlab se face:
cu un clic pe icoana aplicaiei sau,
cu un clic pe butonul Start i apoi pe opiunea Programs; n lista de aplicaii
afiate se execut un clic pe aplicaia Matlab.
1.1 Fereastra aplicaiei Matlab
Fereastra aplicaiei Matlab este cea din Figura 1. Ea cuprinde, de regul, dou
ferestre:
fereastra de comenzi (Command Window) unde se introduc instruciunile
Matlab,
fereastra cu instruciunile introduse anterior, (Command History).
Figura 1. Fereastra aplicaiei Matlab.
Utilitatea fereastrei cu instruciunile introduse anterior, (Command History) este
aceea c, la un clic dublu pe o instruciune din aceast fereastr, ea este copiat n
fereastra de comenzi (Command Window), i executat.
Este posibil de a afia i alte ferestre:
directorul de lucru Matlab, (Current Directory), ce afiaz coninutul
directorului current al aplicaiei,
fereastra Help,
fereastra Workspace, ce afiaz variabilele din program.
Meniurile aplicaiei Matlab au, n general, opiunile cunoscute. Meniul File, artat n
Figura 2, are opiunile:
New, crearea unui fiier nou,
5
Open, pentru a deschide un fiier existent
Close Command History, nchide fereastra Command History,
Page Setup, alege opiunile de tiprire a ferestrei active,
Print, tiprete ferestra activ,
Exit Matlab, nchide aplicaia Matlab.
Sunt afiate de asemenea ultimele patru fiiere deschise.
Aplicaia Matlab poate fi nchis i cu comanda quit sau exit n fereastra de comenzi.
Meniul File Meniul Edit
Figura 2. Meniurile File i Edit ale aplicaiei Matlab.
Meniul Edit conine opiunile cunoscute:
Undo, anuleaz ultima comand,
Redo, execut ultima comand,
Cut, mut textul selectat n Clipboard,
Copy, copiaz textul selectat n Clipboard,
Paste, copiaz textul din Clipboard,
Select All, selecteaz tot textul ferestrei active,
Find, permite cutarea n text a unui ir de caractere,
Clear Command Window, terge coninutul ferestrei de comenzi,
Clear Command History, terge coninutul ferestrei cu comenzile introduse.
Meniul Vindow, afiat n Figura 3, are opiuni de afiare sau ascundere a diverselor
ferestre:
Command Window, afiaz / ascunde ferestra de comenzi,
Command History, afiaz / ascunde ferestra cu comenzile precedente,
Current Directory, afiaz / ascunde directorul de lucru,
6
Workspace, afiaz / ascunde spaiile de lucru,
Figura 3. Meniul Window.
Fiecare fereastr are un buton de nchidere , un buton undock, , care mut
fereastra respectiv n afara Ferestrei Matlab i un buton dock, , mut fereastra
napoi n cadrul ferestrei Matlab.
Meniul Desktop din Figura 4 permite organizarea ferestrei aplicaiei.
Figura 4. Meniul Desktop.
7
Putem afia doar ferestrele dorite, cu opiunile Command Window, , Help.
Submeniul Desktop Layout permite de asemenea alegerea ferestrelor dorite i
aranjarea lor.
Bara de instrumente a aplicaiei Matlab este artat n Figura 5. O parte din butoane
corespund opiunilor meniurilor File i Edit.
Figura 5. Bara de instrumente a aplicaiei Matlab.
Semnificaia butoanelor este cea din Tabelul 1.
Buton Semnificaie
Crearea unui nou fiier .m
Deschide un fiier
Cut
Copy
Paste
Undo
Redo
Lansare Simulink
Lansare GUIDE
Help
Selectarea directorului curent
Alegerea unui nou director
curent
Tabelul 1. Butoanele barei de instrumente a aplicaiei Matlab.
1.2 Fereastra editorului Matlab
Funciile limbajului Matlab sunt scrise n fiiere cu extensia .m cu ajutorul editorului
Matlab. Ferestra editorului este cea din Figura 6.
8
Figura 6. Fereastra editorului Matlab.
Meniul File al editorului are opiunile cunoscute, de a deschide un fiier nou sau unul
existent, de a salva i nchide fiiere, etc. Sunt afiate i ultimele patru fiiere
deschise. Meniul File este artat n Tabelul 2a. Meniul Edit are opiunile Cut, Copy,
Paste, Undo, Redo, Find, Replace, etc. Meniul Edit este artat n Tabelul 2b.
9
a) meniul File b) meniul Edit.
Tabelul 2. Meniurile File i Edit ale editorului Matlab.
Meniul Text din Figura 7a are opiuni pentru comentarea i decomentarea textului,
indentarea programului, etc. Un grup de instruciuni se poate comenta sau decomenta
prin selectarea i clic pe opiunile Comment respectiv Uncomment.
Meniul Debug din Figura 7b permite executarea instruciunilor din fiier cu opiunea
Save File and Run.
10
a) meniul Text b) meniul Debug
Figura 7. Meniurile Text i Debug ale editorului Matlab.
Comenzi utile pentru lucrul cu editorul sunt:
clc trege ecranul,
format formateaz rezultatele, vezi paragraful Formatarea rezultatelor,
dir listeaz fiierele din directorul curent,
pwd afiaz numele directorului curent.
11
2 Elementele limbajului Matlab
2.1 Constante
Constantele utilizate n Matlab sunt numerele reale, numerele complexe i irurile de
caractere.
Numerele reale
se scriu cu partea subunitar separat de cea ntreag de punct. Exemple
7.5, -4.0, -4
Numerele reale se pot scrie cu exponent, de forma en sau dn. Exemple
1.23e-2, -2.5e+2, -2.5e2
Numere complexe
Sunt predefinite constantele complexe i i j cu 1 j i . Numrul complex a+bi se
scrie
a+bi, a+bj
Se poate defini o variabil complex,de exemplu 1 s , cu instruciunea
s=sqrt(-1)
In acest caz numrul complex a+bi se scrie
a+b*s
In Matlab exist cteva constante predefinite: pi, eps, NaN, Inf, realmin, realmax.
Semnificaia lor este cea din Tabelul 3.
Constanta Semnificaia
pi

eps precizia calculelor, 2


-52

Inf

NaN (not-a-number) este rezultatul operaiilor 0/0,

realmin cel mai mic numr real


reprezentabil, 2
-1022

realmax cel mai mare numr real
reprezentabil, 2
1023

i, j unitatea imaginar
Tabelul 3. Constante predefinite n Matlab.
2.2 Variabile
Numele de variabile sunt formate din litere i cifre i ncep cu o liter. Variabilele
sunt create automat la ntlnirea unui nou nume. Variabilele sunt iniializate cu
instruciuni de forma
ident = expresie
Menionm c literele mici sunt diferite de literele mari. De exemplu, variabila x este
diferit de variabila X.
Pentru a afia valoarea unei variabila se tasteaz numele ei.
2.3 Operatori aritmetici. Expresii aritmetice
Operatorii aritmetici utilizai n Matlab sunt:
+, -, *, /, \, ^
Operatori +, -, *, /, sunt cei patru operatori aritmetici cunoscui. Operaia a \ b se
definete ca
12
b
a
*
1
Operatorul ^ este ridicarea la putere. Expresia a^ b este
b
a
Funciile matematice uzuale sunt cele de mai jos:
sin asin sqrt exp abs floor
cos acos log ceil
tan atan log10 round
atan2
Funcia abs() calculeaz modulul unui numr real sau complex. Funcia atan2(x, y)
calculeaz valoarea atan(x / y);
Prioritile operatorilor sunt cele cunoscute. Operatorii + i unari au cea mai mare
prioritate, urmai de operatorul ^, urmat de urmai de operatorii *, /, \, iar operatorii +
i binari au cea mai mic prioritate. Operatorii unari sunt asociativi la dreapta,
operatorii binari sunt asociativi este la stnga. De exemplu, expresia 2^2^3 = (2^2)^3
i are rezultatul 64. Funcia round() rotunjete la cel mai apropiat ntreg, funcia
floor() rotunjete in jos, funcia ceil() rotunjete n sus la cel mai apropiat ntreg.
Exemple de expresii aritmetice i valorile lor sunt artate n Tabelul 4.
Expresie aritmetic Valoare
2 ^ 2.5 5.6569
4 / 3 1.3333
4 \ 3 0.75
8 / 4 / 2 = (8 / 4) / 2 1
3.3 ^ 2 ^ 1.5=(3.3 ^ 2) ^ 1.5 35.9370
-2^-3 -0.125
floor(1.9) 1
floor(-1.9) -2
ceil(1.1) 2
ceil(-1.1) -1
round(1.1) 1
round(1.9) 2
Tabelul 4. Expresii aritmetice.
Pentru lucrul cu numere complexe sunt utile funciile
angle real imag conj complex
Funciile real() i imag() calculeaz partea real i imaginar ale unui numr complex,
conj() calculeaz conjugatul unui numr complex. Funcia angle() calculeaz faza n
radiani a unui numr complex. Modului numrului complex se calculeaz cu funcia
abs(). Faza se poate calcula i cu funciiile atan() i atan2(). Pentru numrul complex
z = x + yi, faza se calculeaz ca atan(imag(z) / real(z)) sau atan2(imag(z), real(z)).
Funcia complex(x, y) creaz numrul complex x + iy din numerele reale x i y.
Fie numrul complex z = 2+3i. Operaii cu acest numr complex sunt artate n
Tabelul 5.
Expresia aritmetic Valoare
real(z) 2
imag(z) 3
abs(z) 3.6056
angle(z) 0.9828
13
atan(imag(z)/real(z)) 0.9828
atan2(imag(z), real(z)) 0.9828
Tabelul 5. Operaii cu numere complexe.
In cadrul expresiilor aritmetice se pot utiliza paranteze rotunde, ( i ), pentru a
modifica prioritile operatorilor.
Pentru a suprima afiarea rezultatelor, la sfritul unei instruciuni se scrie operatorul;
Continuarea unei instruciuni pe mai multe linii se face cu operatorul
2.4 Operatori relaionali. Expresii relaionale
Operatorii relaionali din Matlab sunt:
< <=, >, >=, = =, ~=
sau
lt, le, gt, ge, eq, ne
O expresie relaional este format din dou expresii aritmetice separate de un
operator relaional. Rezultatul unei expresii relaionale este true (adevrat) sau false
(fals) ce au valorile 1 i repectiv 0. Prioritatea oricrui operator aritmetic este mai
mare dect cea a operatorilor relaionali. Exemple de expresii relaionale i valorile
lor sunt prezentate n Tabelul 6.
Expresie relaional Valoare
2 ~= 2 0
2 < 7 1
3 < -5 0
ne(2, 3) 1
ge(2, 7) 0
lt(-2, 5) 1
Tabelul 6. Expresii relaionale.
Dou funcii utile sunt any i all ce se aplic asupra vectorilor. Funcia any are
valoarea true dac cel puin un component al vectorului este diferit de zero, iar all are
valoarea true dac toate componentele vectorului sunt diferite de zero.
2.5 Operatori booleeni. Expresii booleene
2.5.1 Operatori booleeni ce conecteaz expresii relaionale
Aceti operatori sunt &&, || i ~ i reprezint operatorii i (and), sau (or) i respectiv
nu (not). Sunt predefinite constantele booleene true i false ce au valorile 1 i
repectiv 0. Operatorul ~ este unar i are aceeai prioritate ca i operatorii + i unari.
Prioritile celorlali operatori booleeni sunt respectiv && i ||. Prioritatea oricrui
operator aritmetic sau relaional este mai mare dect cea a operatorilor booleeni && i
||. In scrierea expresiilor booleene se pot utiliza paranteze rotunde, ( i ), pentru a
grupa termeni.
Exemple. Fie variabilele a i b cu valorile
a = 2
b = 3
Expresii booleene cu aceste variabile i valoarea lor sunt prezentate n Tabelul 7.
Expresie booleean Valoare
14
a < 5 && b < 7 1
a > 5 && b < 7 0
a > 0 || b + 1 > 2 1
~(1 > -1) 0
Tabelul 7. Expresii booleene.
In scrierea expresiilor booleene sunt utile teoremele lui De Morgan:
~(a || b) = ~a && ~b
~(a && b) = ~a || ~b
2.5.2 Operatori booleeni ce acioneaz asupra scalarilor i
elementelor matricelor
Aceti operatori sunt &, |, i ~. Ei reprezint operatorii and (i), or (sau), i respectiv
not (nu). Orice numr diferit de 0 este considerat c reprezint valoarea adevrat,
orice numr 0 reprezint valoarea fals. Operatorul ~ este unar i are aceeai prioritate
ca i operatorii + i unari. Operatorii & i | sunt operatori binari. Prioritile lor sunt
respectiv & i |, i mai mici dect cele ale operatorilor aritmetici. Exemple de expresii
booleene sunt prezentate n Tabelul 8.
Expresie boolean Valoare
~1 0
~5.2 0
~-7.4 0
~0 1
a & ~ a 0
a | ~a 1
~1 > -1 1
~2 > 1 0
Tabelul 8. Expresii booleene.
In ultimele exemple se evalueaz mai nti expresia ~1, deoarece operatorul ~ are
prioritate mai mare ca >, vezi tabelul cu prioritile operatorilor de mai jos..
Exist funcia xor cu dou argumente, ce corespunde operatorului xor (sau exclusiv).
Funcia xor are valoarea true (adevrat) dac un singur argument are valoarea true
(adevrat). De exemplu, expresia
xor(3, 4)
are valoarea zero.
2.6 Prioritile i asociativitatea operatorilor
Prioritile i asociativitatea operatorilor din Matlab sunt cele artate n Tabelul 9.
Operatorii sunt scrii n ordinea prioritii.
Operator Asociativitate
+unar, - unar, ~ dreapta
^ stnga
*, /, \ stnga
+binar, - binar stnga
<, <=, >, >=, = =, ~= stnga
& stnga
| stnga
15
&& stnga
|| stnga
Tabelul 9. Prioritile i asociativitatea operatorilor.
2.7 Operaii cu iruri de caractere
Sirurile de caractere se scriu ntre ' (apostrofuri). De exemplu, irul abc se scrie
'abc'
Dac n ir apare caracterul ' acesta se scrie ca '' (dou apostrofuri). De exemplu, irul
a'b se scrie
'a''b'
Un ir de caractere este un vector ce conine codurile numerice ale caracterelor.
Caracterele se reprezint n Matlab n codul ASCII. Indicele primului element din ir
este 1.
Numrul de caractere se obine cu funcia length() sau cu funcia size(). De exemplu
length('abc')
are rezultatul 3, iar
size('abc')
are ca rezultat matricea [1 3].
Operatorul de concatenare a irurilor este []. De exemplu
['abcd' '+-*/' '123']
are ca rezultat irul
abcd+-*/123
Cteva funciile pentru lucrul cu caractere sunt urmtoarele:
funcia strcat() cu forma
strcat(s1, s2, , sn)
concateneaz irurile s1, s2, , sn,
funcia strcmp() cu forma
strcmp(s1, s2)
compar dou iruri i are rezultatul 1 (true) dac irurile sunt egale i 0 (false)
n caz contrar. Sirurile sunt egale cnd conine aceleai caractere i au aceeai
lungime,
funciile isletter() i isspace() cu formele
isletter(s)
isspace(s)
au ca argument irul s i ca rezultat un vector de aceeai dimensiune cu irul,
ce conine 1 pentru caracterele litere / spaii i 0 n caz contrar. Caracterele
spaii sunt '\t', '\n' i ' ',
funcia ischar() cu forma
ischar(s)
are ca rezultat 1 dac argumentul s este un ir i 0 n caz contrar,
funcia findstr() cu forma
findstr(s1, s2)
caut irul cel mai scurt n cel mai lung. Rezultatul funciei este un vector cu
indicii fiecrei apariii a unui ir n cellalt.
funciile lower() i upper() cu formele
lower(s)
upper(s)
au ca argument irul s i ca rezultat irul convertit n litere mici / mari.
Exemplu. Funcia
16
findstr('abcdab', 'ab')
are ca rezultat vectorul cu indicii apariiei irului ab n irul abcdab.
1 5
Exemplu. Fie irurile
str1 = sir1 ;
str2 = sir2
Expresia
strcmp(str1, str2)
are valoarea zero deoarece irurile nu sunt egale.
Exemplu. Expresia
strcat ('xyz', 'a+x')
are ca rezultat irul
xyza+x
2.8 Vectori i matrice
2.8.1 Operaii cu vectori i matrice
Definirea unui vector sau a unei matrice se face scriind elementele ntre paranteze
drepte, [ ]. Operatorul [ ] se va numi operator de concatenare. Exemplu de vector
[-1.3, sqrt(3), (1+2)*4/5]
Caracterele , i spaiu separ coloanele. Caracterele ; i CR (cariage return) separ
liniile. De exemplu,
A = [1, 2, 3 ;
4 5 6
7 8 9]
definete o matrice cu 3 linii i 3 coloane. Prima linie este separat de cea de a doua
prin ;, a doua linie este separat de a treia prin CR.
Indicii vectorilor i matricelor ncep de la 1. Elementul ij
a
al matricei a se scrie a(i, j).
Operaiile cu matrice se efectueaz cu operatorii +, -, *, /, \, ^, .*, ./, .\ i .^.
Semnificaia operatorilor +, -, * este cea de adunare, scdere i nmulire a matricelor
cu dimensiuni corespunztoare. Ceilali operatori au semnificaia din Tabelul 10.
Operator Exemplu Semnificaie
/ a/b a * inv(b)
\ a\b inv(a) * b
^ a^b
b
a
.* c=a.*b
ij ij ij
b a c *
./ c = a / b
ij ij ij
b a c /
.\ c = a.\b
ij ij ij
a b c *
.^ c = a ^ b
ij ij ij
b a c ^
Tabelul 10. Operaii cu matrice.
Prioritile operatorilor .*, ./, .\ i .^ sunt cele ale operatorilor *, /, \ i ^. In cazul
operatorului ^, unul dintre operanzi trebuie s fie scalar.
Transpusa unei matrice se calculeaz cu operatorul '.
Tabelul 11 arat cteva funcii utile pentru lucrul cu vectori i matrice..
17
Funcia Rezultat
length(x) lungimea vectorului x
sum(x) suma elementelor vectorului x
prod(x) produsul elementelor vectorului x
det(A) determinantul matricei A
inv(A) inversa matricei A
[m n] = size(A) dimensiunile matricei A
Tabelul 11. Funcii pentru lucrul cu vectori i matrice.
n cazul n care matricea este singular sau aproape singular, se afiaz un
mesaj de eroare.
funcia size(A) are ca rezultat o matrice cu o linie i dou coloane cu
dimensiunile matricei A, m i n.
Operatorii booleeni ~, &, | i xor se aplic asupra elementelor vectorilor i matricelor.
In cazul operatorilor &, | i xor matricele trebuie s aib aceleai dimensiuni.
Exemple. Fie matricele :
a = [ 0 1 b = [1 2
2 3] i 3 4]
Expresia ~b are rezultatul
[0 0
0 0]
Expresia a & b are rezultatul
[0 1
1 1]
iar expresia a | b are rezultatul
[1 1
1 1]
Expresia xor(a, b) are rezultatul
[1 0
0 0]
Funciile matematice uzuale, sin, cos, etc., pot avea ca argumente vectori i matrice.
In acest caz funcia se aplic asupra fiecrui component al vectorului sau matricei
(vectorizarea funciilor). Fie de exemplu matricea
A = [1 2 ;
3 4]
Avem rezultatele :
sin(A) = [0.8415 0.9093 ;
0.1411 -0.7568]
log(A) = [0 0.6931 ;
1.0986 1.3863]
2.8.2 Generarea vectorilor
Se pot genera vectori ale cror elemente cresc cu o valoare dat cu operatorul :. In
prima form, expresia
vi : vf
genereaz un vector cu primul element vi i urmtoarele elemente cu valorile vi + 1,
vi + 2, , pn la ultimul element ce are valoare <=vf. De exemplu, expresia
1: 3
genereaz vectorul
1 2 3
18
iar expresia
1: 3.3
genereaz vectorul
1 2 3
In a doua form, expresia
vi: r: vf
genereaz un vector cu primul element vi, urmtoarele elemente vi+r, vi+2*r, ,
pn la ultimul element ce are valoare <=vf. De exemplu, expresia
1: 0.5: 3
genereaz vectorul
1 1.5 2 2.5 3
Expresia
1: 0.7 : 3
genereaz vectorul
1.7 2.4
Putem atribui aceti vectori ca valori unor variabile. De exemplu, instruciunea
A = [1:1:3; 2:1::4];
genereaz matricea
A = [1 2 3
2 3 4]
2.8.3 Lucrul cu matrice mprite n blocuri
Indicii elementelor matricelor i vectorilor ncep de la 1. Indicii pot fi numere
pozitive, expresii sau vectori cu elemente pozitive. Expresia : reprezint toate
elementele unei linii sau ale unei coloane.
Exemplu. Fie matricea
A = [1 2 3 4;
5 6 7 8;
9 8 7 6;
5 4 3 2]
Expresia A(1:2,2:3) este matricea format din elementele de la intersecia liniilor 1, 2
i coloanelor 2, 3
[2 3
6 7]
Expresia A(2, :) este linia a doua a matricei,
[5 6 7 8]
Expresia A(1:3, 2:4) este matricea format din elementele de la intersecia liniilor 1,
2, 3 i coloanelor 2, 3, 4
[2 3 4;
6 7 8;
8 7 6]
2.8.4 Concatenarea matricelor
Operatorul de concatenare este []. El concateneaz elementele sale ntr-un tablou. De
exemplu, pentru a defini un vector x putem scrie
x = [12.3 -2.74 14]
Instruciunea
y = [[1 2 3], [4 5 6], 7]
creaz vectorul
y = [1 2 3 4 5 6 7]
19
Fie A matricea de mai sus. Instruciunea
B = [A [-1 -2 -3 -4]']
concateneaz matricea A i vectorul coloan [-1 -2 -3 -4]'. Rezultatul este matricea
B = [1 2 3 4 -1
5 6 7 8 -2
9 8 7 6 -3
5 4 3 2 -4]
Instruciunea
B = [A; [-1 -2 -3 -4]]
concateneaz matricea A i vectorul linie [-1 -2 -3 -4] n matricea
B = [1 2 3 4
5 6 7 8
9 8 7 6
5 4 3 2
-1 -2 -3 -4]
Fie de exemplu, vectorul coloan
v = (1 : 3)'
Instruciunea
m = [v v.^3 3.^v]
are ca rezultat matricea
m = [1 1 3
2 8 9
3 27 27]
2.8.5 Funcii ce creaz matrice speciale
Funciile din Tabelul 12 creaz matrice speciale. In acest tabel m reprezint numrul
de linii iar n numrul de coloane.
Funcia Semnificaie
zeros(m, n) Matrice cu toate elementele zero
ones(m, n) Matrice cu toate elementele unu
rand(m, n) Matrice cu elementele numere aleatoare
cu distribuie uniform
randn(m, n) Matrice cu elementele numere aleatoare
cu distribuie normal
eye(m, n) Matrice cu 1 pe diagonal i restul
elementelor 0. eye(n) creaz o matrice
unitate de dimensiune n.
Tabelul 12. Funcii ce creaz matrice speciale.
De exemplu, instruciunea
A = zeros(2, 5);
creaz matricea
1
]
1

0 0 0 0 0
0 0 0 0 0
iar instruciunea
f = 5 * ones(3, 2);
creaz matricea
20
1
1
1
]
1

5 5
5 5
5 5
2.8.6 Modificarea dimensiunilor matricelor
Este posibil de a transforma o matrice cu anumite dimensiuni ntr-o matrice cu alte
dimensiuni. Este posibil de a transforma o matrice ntr-un vector sau invers.
Transformarea matricelor se face n felul urmtor : elementele matricei originale se
aaz ntr-un vector, coloan dup coloan. Vectorul obinut se transform ntr-o
matrice creind din vector coloanele noii matrice. Funcia ce face aceste transformri
se numete reshape. In continuare se prezint cteva exemple de utilizare a acestei
funcii. Fie matricea a
a = [1 2 3; 4 5 6]
a =
1 2 3
4 5 6
reshape(a, 3, 2)
ans =
1 5
4 3
2 6
reshape(a, 6, 1)
ans =
1
4
2
5
3
6
Fie vectorul b
b = [1 2 3 4 5 6]
b =
1 2 3 4 5 6
reshape(b, 2, 3)
ans =
1 3 5
2 4 6
2.9 Structuri
Este posibil de a defini structuri. Elementele structurilor se adreseaz cu operatorul .
Ca exemplu vom defini o structur cu dou componente, x i y ca mai jos.
a.x = 2;
a.y = 3;
21
b = a.x + a.y
b =
5
a
a =
x: 2
y: 3
2.10 Funciile load i save
Funcia load citete fiiere text sau binare ce conin matrice sau vectori. Fiecare linie
din fiier este scris ntr-o linie a unei matrice. De exemplu, instruciunea
load mag.dat
citete fiierul mag.dat i creaz cu datele din acest fiier matricea mag.
Funcia save salveaz un vector sau o matrice ntr-un fiier de date. Fiecare linie a
matricei este nscris ntr-o linie din fiier. Aceste fiiere pot fi apoi citite cu funcia
load. Fie de exemplu matricea
x = [1, 2, 3 ; -2.2, -3.5, -7 ; 3.3, 4, 7]
Instruciunea
save x
salveaz martricea x ntr-un fiier cu numele x.mat (extensia implicit este mat).
Instruciunea
save x.dat
salveaz matricea x ntr-un fiier cu numele x.dat.
2.11 Introducerea datelor de la tastatur
Pentru introducerea de valori de la tastatur se utilizeaz instruciunea input cu
formele
var = input(prompt)
var = input(prompt, s)
unde
var - variabila creia i este atribuit valoarea citit,
prompt irul de caractere afiat pe ecran ca prompter,
s dac exist parametrul s, valoarea citit este atribuit variabilei var ca ir
de caractere i nu ca valoare numeric.
De exemplu, instruciunea
a = input(>)
afiaz pe ecran prompterul >, citete o valoare de la tastatur, o atribuie varabilei a i
o afiaz pe ecran, ca mai jos
a>-2.5
2.12 Funcii pentru lucrul cu iruri de caractere
Sirurile de caractere n Matlab sunt vectori de caractere. Ele se prelucreaz ca i
tablourile de numere. Caracterele se reprezint n Matlab n codul ASCII.
Tabelul 13 prezint cteva funcii utile pentru lucrul cu irurile de caractere.
Funcia Operaia realizat
char(x) convertete un numr ntr-un caracter
num2str (x) convertete numere n iruri de caractere
str2num(sir) convertete un ir de caractere ntr-un numr
22
Tabelul 13. Funcii pentru lucrul cu iruri de caractere.
Expresia
x = a:1:f
genereaz vectorul
x = [97 98 99 100 101 102]
cu codurile ASCII ale caracterelor. Expresia
char(x)
convertete numerele n caractere ASCII i genereaz irul de caractere
abcdef
Raia r poate fi i negativ. De exemplu, expresia
char( ['h':-1:'a'])
sau expresia
char( 'h':-1:'a')
genereaz vectorul
hgfedcba
Funcia poate prelucra i matrice. De exemplu, iinstruciunea
x = ['e': -1: 'a'; 'a':1:'e']
creaz matricea
101 100 99 98 97
97 98 99 100 101
Expresia
char(x)
aplicat asupra acestei matrice are rezultatul
edcba
abcde
Funcia num2str convertete numere n iruri de caractere. Formele funciei sunt
num2str(x)
i
num2str(x, n)
unde x este numrul convertit sau matricea convertit n ir de caractere iar n
specific numrul maxim de cifre semnificative convertite.
Exemplu.
num2str(2.3134)
convertete numrul 2.3134 n irul '2.3134', n timp ce
num2str(2.3134, 3)
convertete numrul 2.3134 n irul '2.31'.
Exemplu
num2str(rand(1, 2), 3)
convertete argumentul, matricea rand(1, 2), n irul de caractere
'0.821 0.445'
Funcia str2num convertete un ir de caractere ntr-un numr. Forma funciei este
str2num(sir)
unde sir este irul ce va fi convertit n numr.
Exemplu. Fie instruciunea
x = str2num('2.5') + str2num('-3.7')
Se convertesc irurile de caractere n numere i rezultatul este
x =
-1.2000
23
2.13 Formatarea rezultatelor
Alegerea formatului de afiare a numerelor se face cu instruciunea format cu sintaxa
format tip
format (tip)
Cele dou forme ale instruciunii sunt echivalente. Valorile pentru tip sunt cele din
Tabelul 14.
Tip Rezultat
short Se afiaz 4 cifre dup virgul, fr exponent
long Se afiaz 14 cifre dup virgul, fr exponent
short e Se afiaz 4 cifre dup virgul, cu exponent
long e Se afiaz 14 cifre dup virgul, cu exponent
bank Se afiaz 2 cifre dup virgul, fr exponent
compact Suprim caracterele CR pentru a afia mai puine
linii vide
Tabelul 14. Parametrul instruciunii format.
format short
pi/10
ans =
0.3142
format short e
pi/10
ans =
3.1416e-001
format bank
pi/10
ans =
0.31
format short e
format compact
pi/10
ans =
3.1416e-001
2.14 Celule. Tablouri de celule
O celul este un obiect ce poate s conin obiecte de orice tip, vectori, matrice, alte
celule, etc. Elementele unei celule se scriu ntre acolade, { i }. De exemplu, o celul
ce conine vectorul [1 2 3] se definete astfel :
Z = {[1 2 3]}
24
Z =
[1x3 double]
Este posibil de a defini tablouri de celule ce pot conine ca elemente celule cu obiecte
de tipuri diferite, tablouri, vectori sau matrice, structuri, iruri de caractere, etc.
Tablourile de celule se definesc asemntor cu tablourile obinuite, dar cu elementele
scrise ntre acolade, { i }. Vectorii de celule sunt utili la scrierea unor mesaje pe mai
multe linii. Ca exemplu, un vector coloan de celule ce conine ca elemente iruri de
caractere este urmtorul
A = {abc ; xyz ; mnp}
Un tablou de celule se creaz cu funcia cell() sau prin atribuire. De exemplu,
instruciunile
A = cell(2, 3)
B = {[], [], [] ; [], [], []}
creaz dou tabele de celule, A i B, cu dou linii i trei coloane cu celule vide.
Exist dou moduri de a adresa celulele unui tablou :
cnd utilizm paranteze rotunde, (), adresm celulele tabloului,
cnd utilizm acolade, {}, adresm valorile celulelor tabloului.
Fie de exemplu tabloul cu dou celule
D = {[1 2], [-1+j, 2+3j]}
D =
[1x2 double] [1x2 double]
Dup cum se observ, tabloul conine obiecte de tipuri diferite. Vrem s extragem
datele din tablou.
Rezultatul instruciunii
C1 = D(2)
C1 =
[1x2 double]
este o celul.
Rezultatul instruciunii

C2 = D{2}
C2 =
-1.0000 + 1.0000i 2.0000 + 3.0000i
este chiar data din celul (este un tablou).
Vom crea un tablou cu dou celule X, cu aceleai componente ca D. Vom atribui
primei celule ca valoare vectorul [1, 2] utiliznd paranteze rotunde pentru indice.
Elementul atribuit trebuie s fie o celul.
X(1) = {[1, 2]}
X =
25
[1x2 double]
Vom atribui celei dea doua celule ca valoare vectorul [-1+j, 2+3j] utiliznd acolade.
Elementul atribuit trebuie s fie un tablou (datele din celul).
X{2} = [-1+j, 2+3j]
X =
[1x2 double] [1x2 double]
Afiarea primului element al vectorului [1, 2] din prima celul a lui X se face cu
expresia X{1}(1)
X{1}(1)
ans =
1
Amintim c X{1} are ca rezultat vectorul [1, 2] din prima celul, iar X{1}(1) are ca
rezultat primul component al acestui vector.
Fie un vector cu dou celule cu elementele vectorii [1, 2.3] i [-3.28, 7].
Z = {[1, 2.3], [-3.28, 7]}
Z =
[1x2 double] [1x2 double]
Suma celor doi vectori se face ca mai jos.

Z{1} + Z{2}
ans =
-2.2800 9.3000
Afiarea elementelor unui tablou de celule se face cu funcia celldisp(). Ca exemplu,
s afim vectorul de celule X.
celldisp(X)

X{1} =
1 2
X{2} =
-1.0000 + 1.0000i 2.0000 + 3.0000i
Pentru a concatena elementele unui vector de celule se utilizeaz operatorul [].
Exemplu. Concatenarea elementelor vectorului X se face cu expresia
[X{:}]
26
ans =
1.0000 2.0000 -1.0000 + 1.0000i 2.0000 + 3.0000i
Aplicarea unei funcii asupra fiecrei celule a unui tablou se va exemplifica n
capitolul referitor la funcii.
27
3 Instruciuni Matlab
3.1 Instruciunea for
Instruciunea for are forma
for ident = vi:r:vf
bloc de instruciuni
end
Aici vi este valoarea iniial a variabilei ident, r este raia iar vf este valoarea final.
Cnd r > 0, instruciunea for execut blocul de instruciuni repetat cu variabila ident
lund valorile vi, vi + r, vi + 2*r, ... att timp ct ident <= vr. Dac r are valoarea unu,
expresia se poate scrie vi : vf.
Exemplu. Programul urmtor creaz un vector a cu cinci elemente, cu valorile 1, 1 / 2,
..., 1/5.
for i = 1 :5
a(i) = 1 / i ;
end
Menionm c, raia r poate fi i negativ. Atunci variabila ident ia valorile vi, vi + r,
vi + 2*r, ... att timp ct ident >= vr.
Instruciunea for are i urmtoarea form
for ident = expresie
bloc de instruciuni
end
Aici expresie este un vector sau o matrice.
Cnd expresie este un vector, ident ia ca valoare cte un element al vectorului i
execut blocul de instruciuni. Exemplul de mai sus poate fi scris ca
j = [1 : 1 : 5] ;
for i = j
a(i) = 1 / i ;
end
Atunci cnd expresie este o matrice, variabila ident ia pe rnd ca valoare cte o
coloan a matricei i execut blocul de instruciuni.
Exemplu. Fie matricea
1 2
2 4
3 6
a
1
1

1
1
]
Pentru fiecare coloan a
i
a matricei vrem s calculm matricea a
i
* a
i
. Fie
instruciunile
a = [ [1 2 3] [-2 -4 -6]]
for i = a
i * i
end
Rezultatul este
ans =
1 2 3
2 4 6
28
3 6 9
ans =
4 8 12
8 16 24
12 24 36
Menionm c, n prima form a instruciunii, expresia vi : r : vf este un vector linie.
Instruciunea for se utilizeaz n acelai mod n cazul tablourilor de celule. Fie
vectorul de celule de mai jos
D = {[1 2], [-1+2j, 2+3j]}
D =
[1x2 double] [1x2 double]
Afiarea componentele celulelor cu instruciunea for se face astfel
for i = 1:2
D{i}
end
ans =
1 2
ans =
-1.0000 + 2.0000i 2.0000 + 3.0000i
Reamintim c D{i} are ca rezultat valoarea celulei.
3.2 Instruciunea while
Instruciunea while execut repetat un bloc de instruciuni att timp ct o condiie este
adevrat. Forma instruciunii este
while condiie
bloc de instruciuni
end
Ca exemplu, vom rezolva problema de mai sus.
i = 1 ;
while i <= 5
a(i) = 1 / i ;
end
In general condiia poate fi o expresie complex. In acest caz se consider partea real
a expresiei.
Exemplu. Fie matricea cu elemente complexe
4 5 6
4 5 2 0
b
i i
1

1
+ +
]
29
Vom afia coloanele matricei atta timp ct fiecare coloan are toate elementele
nenule. Fie programul de mai jos.
i = 1 ;
while i <= 3 && all(b( :, i)
b( :, i)
i = i + 1
end
Rezultatul este urmtorul.
ans =
4.0000
4.0000 + 1.0000i
ans =
5.0000
5.0000 + 2.0000i
Operatorul && se execut n felul urmtor. Se evalueaz primul operand. Dac
valoarea lui este fals, rezultatul este fals i al doilea operand nu se mai evalueaz.
Dac primul operand este adevrat, rezultatul este al doilea operand. In felul n care
este scris expresia, nu se poate ajunge la eroarea indice eronat.
3.3 Instruciunile continue i break
Instruciunea break produce ieirea din instruciunile for, while.
Instruciunea continue produce trecerea la urmtoarea iteraie a instruciunilor for i
while.
3.4 Instruciunea if
Instruciunea if execut un bloc de instruciuni n funcie de valoarea unei condiii.
Forma instruciunii if este
if condiie1
bloc1
elseif condiie2
bloc2
..............
elseif condiien
blocn
else
bloc
end
Exemplu. Vom afia un mesaj dup cum valoarea unei variabile este pozitiv sau nu.
test = -5 ;
if test >= 0
variabila este pozitiva
else
30
variabila este negativa
end
3.5 Instruciunea switch
Instruciunea switch execut un bloc de instruciuni n funcie de valoarea unei
condiii. Forma instruciunii switch este
switch condiie
case expresie
bloc
case expresie
bloc
.............
case expresie
bloc
otherwise
bloc
end
condiia din instruciune este orice expresie aritmetic, relaional sau boolean.
Pentru nceput instruciunea switch evalueaz condiia, rezultatul evalurii este un
numr oarecare. Cnd condiia este o expresie boolean sau relaional, rezultatul
evalurii este 0 sau 1 (fals sau adevrat). Instruciunea execut apoi blocul de
instruciuni a crui expresie case coincide cu valoarea condiiei.
Comentariile din programe au forma
% comentariu
31
4 Funcii
4.1 Definirea funciilor
Funciile se definesc n fiiere cu extensia m. Linia de definiie a unei funcii este
function [y1, y2, , yn ] = numefuncie (x1, x2, xk)
Variabilele x1, x2, , xk sunt parametri de intrare. Variabilele y1, y2, , yn sunt
calculate de funcie i sunt parametrii de ieire. Parametrii din definiia funciei se
numesc formali. Funciile pot avea propriile variabile locale. Funciile opereaz
asupra variabilelor din propriul lor spaiu, adic variabilele locale i parametrii.
Exemplu de funcie ce calculeaz patratul i cubul unei valori
function [p, c] = pc(x)
c = x * x;
p = c * x;
O funcie este apelat ca termen ntr-o expresie. Parametrii formali din definiia
funciei sunt nlocuii la apelare cu parametrii actuali. Parametrii de intrare actuali pot
fi expresii ce conin constante, variabile sau funcii. De exemplu, funcia de mai sus
este apelat ca
[a, b] = pc(2.3)
Orice funcie are 2 parametri implicii de intrare:
nargin numrul de parametri de intrare
nargout numrul de parametri de ieire
Execuia unei funcii se termin n mod normal la sfritul funciei. Pentru a termina
execuia funciei mai nainte se utilizeaz instruciunea
return
Funciile sunt salvate n fiiere ce au numele funciei i extensia .m. Imtr-un fiier .m
se pot defini mai multe funcii, apelate de prima fincie definit n fiier.
4.2 Instruciunea global
Instruciunea global se utilizeaz pentru a defini variabile globale. Dac mai multe
funcii i spaiul de baz trebuie s utilizeze aceeai variabil, acest variabil trebuie
declarat global, n fiecare funcie i n spaiul de baz. La atribuirea unei valori
acestei variabile n orice funcie sau n spaiul de baz, valoarea este accesibil tuturor
funciilor i spaiul de baz ce au declarat variabila ca global.
Forma instruciunii global este
global v1 v2
Exemplu. Fie funcia urmtoare ce utilizeaz o variabil global numit comp ce
conine o matrice.
function lm = fcn(x)
% declara variabila globala comp
global comp
lm = x(1) * comp(1, 1) + x(2) * comp(2, 2) ;
Programul urmtor citete o matrice n variabila global comp i apoi apeleaz funcia
fcn.
32
% declara variabila globala comp
global comp
% citeste datele din fisierul comp.txt n matricea comp
load comp.txt
x = [1, 2] ;
fcn(x)
4.3 Variabile handle de funcii
O variabil tip handle de funcii conine toate informaiile necesare despre o funcie
care trebuie apelat mai trziu. De obicei, o variabil tip handle de funcii este pasat
ca argument unei alte funcii. Instruciunea
fh = @numefuncie
memoreaz n variabila fh un handle al funciei numefuncie. Variabila fh poate fi
pasat ca argument altei funcii. Apelarea funciei numefuncie pasat printr-o
variabil handle se face astfel
fh (lista de parametri)
unde lista de parametri conine parametrii actuali ai funciei numefuncie.
Exemplu. Fie funcia fun1(x) care calculeaz valoarea (x + 1) ^ 2. Funcia este
memorat n fiierul fun1.m.
function y = fun1(x)
y = (x + 1) ^ 2;
S calculm valoarea fun1(2.3). Funcia poate fi apelat n dou moduri:
ca o expresie n membrul drept al unei instruciuni de atribuire,
z = fun1(2.3)
z =
10.8900
printr-o variabil handle,
fh = @fun1;
z = fh(2.3)
z =
10.8900
Exemplu. Fie funcia fun2 ce calculeaz suma i suma ptratelor a dou numere.
Funcia este memorat n fiierul fun2.m
function [a b] = fun2(x, y)
a = x + y;
b = x^2 + y^2;
Vom apela funcia cu valorile x = 2.1, y = -3.3 :
ca o expresie n membrul drept al unei instruciuni de atribuire,
33
[z1 z2] = fun2(2.1, -3.3)
z1 =
-1.2000
z2 =
15.3000
printr-o variabil handle,
hf = @fun2;
[z1 z2] = hf(2.1, -3.3)
z1 =
-1.2000
z2 =
15.3000
In exemplele anterioare, funciile erau definite n fiiere .m. Este posibil s definim n
program funcii limitate la o singur expresie, fr nume, i s le atribuim unei
variabile handle. Ele sunt apelate prin variabila handle, ca mai ninte. Asemenea
funcii fr nume se numesc anonime. Definiia unei funcii anonime este
@(lista parametrilor formali de intrare) expresia funciei
Exemplu. S definim o funcie anonim ce calculeaz expresia (x + 1) ^ 2 i s o
apelm cu x = 1.3.
fx = @(x)(x+1)^2 ;
z = fx(1.3)
z =
5.2900
Exemplu. S definim o funcie anonim care calculeaz suma i suma ptratelor a
dou numere n vectorul [x+y, x ^ 2+y ^ 2].
fz = @(x, y) [x+y, x^2+y^2] ;
Apelm funcia cu valorile x = 2.1, y = -3.3.
[z] = fz(2.1, -3.3)
z =
-1.2000 15.3000
O funcie definit ntr-un fiier .m poate avea ca parametru de intrare o variabil
handle. Variabila handle se poate iniializa cu o funcie definit ntr-un fiier .m, cu o
funcie anonim, sau cu o funcie standard Matlab. In acest fel, o funcie poate avea ca
parametri alte funcii.
Fie fcn o funcie ce are ca parametru o alt funcie
x = fcn(f, list de parametri)
34
Aici f este o variabil handle, iar lista de parametri va conine parametrii lui f i ali
parametri ai funciei fcn. Fie fun o funcie ce va fi pasat ca parametru funciei fcn.
Apelarea funciei fcn se face cu urmtoarea secven de instruciuni:
% creaza variabila handle f
f = @fun ;
% paseaza variabila handle i
% lista de parametri actuali ai functiilor fcn si fun
x = fcn(f, lista de parametri actuali);
Exemplu. Fie funcia funb(x) ce va calcula expresia sin(f(x)), unde f(x) este o funcie
oarecare, ce va fi parametru al funciei funb. Funcia funb este memorat n fiierul
funb.m.
function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaz o expresie f(x)
y = fcn(x);
b = sin(y);
Vrem s calculm expresiile sin(x^2) i sin(x^3) cu x = 1.1. Vom defini funcia funa
ce calculeaz valoarea x^3 ca
function a = funa(x)
a = x * x * x;
i func care calculeaz valoarea x^2 ca
function a = func(x)
a = x * x;
Apelm funcia funb cu primul parametru handle al funciei funa i al doilea
parametru 1.1 i obinem
fh = @funa
z = funb(fh, 1.1)
z =
0.9714
Apelm funcia funb cu primul parametru handle al funciei func i al doilea
parametru 1.1 i obinem
fh = @func
z = funb(fh, 1.1)
z =
0.9356
35
Exemplul de mai sus are rolul de a exemplifica utilizarea funciilor Matlab ce au ca
parametri alte funcii. In cazul n care funcia ce este parametru este simpl, putem
utiliza o funcie anonim ca parametru.
z = funb(@(x)x^3, 1.1)
z =
0.9714
Limbajul Matlab are funcia standard feval care se utilizeaz pentru evaluarea
funciilor standard i a celor utilizator din fiierele .m. Funcia feval utilizeaz o
variabil tip handle pentru a evalua funciile. Funcia feval are forma
feval(handle, arg1, arg2, , argn)
unde:
handle variabil handle a funciei ce va fi evaluat
arg1, arg2, ..., argn parametrii funciei ce va fi evaluat
Vom rescrie exemplele de mai sus utiliznd funcia feval. Fie funcia funb ce
calculeaz expresia sin(f(x)). Ea poate avea urmtoarea definiie:
function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaza o expresie f(x)
b = sin(feval(fcn, x));
Exemplu. Fie funcia funa ce calculeaz cubul unei variabile x
function a = funa(x)
a = x * x * x;
Funcia funb este apelat pentru a calcula sin(1.1
3
) astfel
fh = @funa;
b = funb(fh, 1.1);
O alt variant pentru funcia funb este urmtoarea
function b = funb(fcn, x)
% fcn - variabila handle a unei functii
% ce calculeaza o expresie f(x)
z = feval(fcn, x);
b = sin(z);
Pentru a calcula sin(x
2
) este suficient s definim o funcie ce calculeaz ptratul unei
variabile x i s o pasm ca parametru funciei funb
function a = func(x)
a = x * x ;
Funcia funb este apelat pentru a calcula sin(1.1
2
) astfel:
fh = @func;
b = funb(fh, 1.1);
36
Funcia feval poate evalua i funcii anonime. De exemplu, pentru a calcula valoarea
expresiei x^3 pentru x = 1.5 putem scrie
feval(@(x)x^3, 1.5)
ans =
3.3750
Matlab are funcia predefinit functions ce are ca parametru o variabil tip handle de
funcii i ca rezultat o structur cu informaiile despre funcia coninut n variabila
handle. De exemplu, pentru a obine structura cu informaii despre funcia funa vom
scrie
a = functions(@funa)
iar rezultatul va fi
a =
function: 'funa'
type: 'simple'
file: c:\matlab\work\funa
Pentru a afla doar fiierul n care este definit funcia vom afia cmpul file al
structurii a n felul urmtor
a.file
iar rezultatul va fi
ans =
c:\matlab\work\funa
4.4 Vectorizarea funciilor
Toate funciile standard Matlab pot aplicate asupra vectorilor i matricelor. In acest
caz funcia se aplic asupra fiecrui element al vectorului sau matricei (vectorizarea
funciei). Fie de exemplu vectorul
a = [1.1, -2.3, pi]
Instruciunea
b = sin(a)
are rezultatul
[0.8912, -0.7457, 0]
4.5 Aplicarea funciilor asupra tablourilor de celule
Funcia cellfun() permite s aplicm o funcie asupra fiecrui element al unui tablou
de celule. Atunci cnd rezultatul funciei este un scalar i valorile scalare pot fi
concatenate ntr-un tablou, cellfun() are forma
A = cellfun(fun, C1, C2, )
unde Ci sunt tablouri de celule, iar fun este o variabil handle de funcie ce se plic
asupra fiecrie celule din Ci.
Exemplu. S calculm lungimea tablourilor din celulele vectorului X
cellfun(@length, X)
37
ans =
2 2
Funcia cellfun are i forma
A = cellfun(fun, C1, C2, Param1, val1, )
unde Parami sunt parametri, iar vali sunt valorile acestor parametri.
Atunci cnd funcia fun nu are ca rezultat un scalar, sau rezultatele nu pot fi
concatenate ntr-un tablou, utilizm parametrul UniformOutput pus la valoarea false.
Exemplu. S aplicm funcia abs asupra elementelor vectorului de celule X.
Rezultatul aplicrii funciei abs asupra unei celule este un vector.
R = cellfun(@abs, X, 'UniformOutput' , false)
R =
[1x2 double] [1x2 double]
celldisp(R)

R{1} =
1 2
R{2} =
1.4142 3.6056
38
5 Reprezentri grafice
5.1 Reprezentarea curbelor plane
Reprezentarea curbelor n plan se face cu funciile din Tabelul 15:
Funcia Tipul graficului
plot scar liniar pe ambele axe
loglog scar logaritmic pe ambele axe
semilogx scar logaritmic pe axa x
semilogy scar logaritmic pe axa y
polar coordinate polare
stem grafic cu linii terminate cu cercuri
stairs grafic n scar
bar grafic cu bare
Tabelul 15. Funcii pentru reprezentarea curbelor plane.
Funciile au ca parametri perechi de vectori x1, y1, , xn, yn. Vectorii x1, x2, ..., xn
conin abscisele curbelor, iar vectorii y1, y2, ..., yn conin ordonatele curbelor. Forma
funciei plot este
plot(x1, y1, , xn, yn)
Proprietile liniilor cu care se traseaz graficele sunt : culoarea (graficele pot fi
trasate cu diverse culori), stilul (continu, etc.) i simbolurile de marcaj (punctele de
pe grafic pot fi marcate cu diverse simboluri). Aceste trei proprieti (culoare, simbol
de marcaj i stilul liniei) se specific utiliznd simbolurile din Tabelul 16 printr-un ir
de caractere, cte unul pentru fiecare proprietate.
Culoare Simbol Marker Simbol Stil linie Simbol
albastru b punct . continu -
verde g cerc o punctat :
rou r x x ntrerupt --
mov c plus +
roz m asterisc *
galben y ptrat s
negru k
Tabelul 16. Culori, tipuri de linii i de puncte pentru grafice.
Pentru a utiliza o anumit culoare, tip de linie sau simbol la curba (xi, yi), perechea de
vectori xi, yi este urmat de un ir de caractere din tabelul de mai sus de forma cml
ce precizeaz culoarea, markerul i simbolul cu care se traseaz curba. De exemplu,
funcia
plot(x, y, 'b')
traseaz curba (x, y) cu culoarea albastru.
Reprezentarea curbelor n mai multe ferestre se face cu instruciunea
subplot(m, n, p)
Aceast instruciune mparte ecranul ntr-o matrice de m*n ferestre i traseaz axele n
fereastra p, unde p = 1, ..., m * n. Instruciunea plot urmtoare reprezint curba n
fereastra p.
Funcia
xlabel(sir)
39
scrie eticheta axei x (un text sub axa x). Funcia
ylabel(sir)
scrie eticheta axei y (un text dealungul axei y). Funcia
title(sir)
scrie un text ca titlu al figurii.
Instruciunile precedente pot avea i ali parametrii, care s modifice tipul,
dimensiunea, stilul sau culoarea fontului. Un parametru util este FontSize ce d
dimensiunea fontului. De exemplu, funcia
xlabel('sir', 'FontSize', 14)
scrie eticheta axei x cu dimensiunea fontului 14.
Afiarea unei legende pentru cele n curbe dintr-o figur se face cu instruciunile
legend(sir1, sir2, ..., sirn)
sau
legend(sir1, sir2, ..., sirn, pos)
Prima instruciune scrie legenda n colul dreapta sus. A doua instruciune scrie
legendele n poziia specificat de argumentul pos, ce are valorile din Tabelul 17.
pos Poziia
0 cea mai bun poziie
1 colul dreapta-sus
2 colul stnga-sus
3 colul stnga-jos
4 colul dreatpa-jos
-1 n afara graficului
Tabelul 17. Specificarea poziiei legendei.
Legenda arat tipul, markerul i culoarea folosite pentru a reprezenta curba, plus
textul specificat.
Menionm c, figura, aria de desenare, curba, etichetele axelor, etc., sunt obiecte
grafice cu proprieti, create de funciile plot, xlabel, ylabel, etc. Toate funciile
grafice au ca rezultat un handle al obiectului grafic creat, curb, eticheta axei,
legenda, titlul, etc. Acest handle poate fi memorat ntr-o variabil i poate fi utilizat
pentru a obine sau prescrie proprieti ale obiectului grafic.
De exemplu, pentru a afia legenda la figuri unde s-a utilizat instruciunea subplot, se
utilizeaz variabila handle a instruciunii plot ca mai jos
h = plot(t, x)
legend(h, sir)
Funcia
grid
traseaz o gril pe figur.
Limitele axelor se pot specifica cu instruciunea
axis(xmin, xmax, ymin, ymax)
Selectarea automat a axelor se face cu instruciunea
axis auto
Vom exemplifica utilizarea acestor instruciuni pentru reprezentarea grafic a
funciilor sin(t) i cos(t) pe intervalul [0, 2 ]. Programul este urmtorul
t = 0 :0.001 :2*pi ;
plot(t, sin(t), t, cos(t))
xlabel(time)
40
grid
title(sin(time), cos(time))
Rezultatul este prezentat n Figura 8.
Figura 8. Reprezentarea grafic a funciilor sin i cos pe intervalul [0, 2 ].
Este posibil de a utiliza litere greceti, alte caractere speciale sau expresii simple n
instruciunile ce afiaz iruri: title, xlabel i ylabel. Acestea se scriu dup regulile din
Latex. Caracterele se definesc n text sub forma
\nume caracter
Exemple de caractere sunt prezentate n Tabelul 18.
Caracter Definiie Caracter Definiie Caracter Definiie

\theta

\leq

\leftarrow

\Theta

\geq

\rightarrow
\Pi \neq \uparrow

\alpha ' \prime \downarrow


\pm \partial

\leftrightarrow
\infty \equiv

\int
\times \div \surd
\lfloor \rfloor

\subseteq

\supseteq
41
Tabelul 18. Definirea caracterelor speciale.
Definiia literelor greceti mari ncepe cu liter mare, a celor mici cu liter mic, de
exemplu \Omega pentru i respectiv \omega pentru

.
Expresiile se definesc dup urmtoarele reguli:
expresii cu exponeni; expresia a
b
se definete ca a^b,
expresii cu indici; expresia x
i
se definete ca x_i,
dac este cazul, expresiile se grupeaz ntre acolade, { i }.
De exemplu, expresia e
at
se definete ca
e^a^t
sau
e^{at}
Expresia
i
a
se definete ca
a_i
iar expresia x
i+j
se definete ca
x_{i+j}
Pentru a afia un text inclinat, (stilul italic), vom defini acel text ca
\ittext
iar pentru afiare cu litere groase (bold) vom defini textul ca
\bftext
Pentru exemplificare vom reprezenta grafic funcia sin() pe intervalul [0, 2 ]. Vom
scrie urmtoarele texte:
pe axa y, textul sin(),
pe axa x, textul 0 2 ,
titlul graficului va fi Functia sin().
Programul este urmtorul
t = 0: 0.001: 2*pi;
x = sin(t);
plot(t, x)
xlabel('0 \leq \theta \leq 2\pi')
ylabel('sin(\theta )')
title('Functia sin(\theta)')
grid
Rezultatul programului este cel din Figura 9.
42

Figura 9. Reprezentarea grafic a funciei sin() pe intervalul [0, 2 ].
Pentru a utiliza interpreterul Latex generm un ir de caractere cu expresia ce dorim
s fie afiat i apelm funcia text. Pentru exemplificare vom reprezenta funcia
sin(t)/t . Legenda axei x, t[s], va fi scris cu litere groase (bold).
xlabel('\bft[s]')
Vom afia pe figur formula sin(t) / t n centrul figurii. Pentru aceasta vom crea un ir
de caractere cu formula scris n Latex
texstr = '$\frac{sin(t)}{t}$';
Sirurile de caractere se afiaz pe grafic ntr-o anumit poziie cu funcia text cu
forma
text(NumeProprietate, ValoareProprietate, )
Proprietile des utilizate ale obiectului text sunt :
String irul ce va fi afiat,
FontSize d dimensiunea fontului n uniti de font,
FontUnits unitile de font, points, normalized, pixels, centimeters,
HorizontalAlignment aliniamentul orizontal, left, center, right,
VerticalAlignment aliniamentul vertical, top, middle, bottom,
Interpreter interpreterul utilizat, latex, tex, none,
Units unitile de msur, points, normalized, pixels, centimeters
Position poziia irului, [x, y].
Opiunea normalized a proprietii Units transform colul din stnga jos al
dreptunghiului figurii n (0, 0) i cel din dreapta sus n (1, 1).
43
Vom apela funcia text astfel :
text('string', texstr, 'interpreter', 'latex', 'fontsize',40,...
'units','norm', 'pos',[.5 .5]);
Programul este urmtorul
t = 0:0.01:4*pi;
x = sin(t) ./ t;
plot(t, x)
grid
xlabel('\bft[s]')
texstr = '$\frac{sin(t)}{t}$';
text('string',texstr, 'interpreter', 'latex', 'fontsize',40,...
'units','norm', 'pos',[.5 .5]);
Rezultatul programului este cel din Figura 10.
Figura 10. Reprezentarea grafic a funciei sin(t) / t.
Implicit, fiecare instruciune plot creaz o nou figur. Dei o instruciune plot poate
reprezenta grafic mai multe curbe, uneori este necesar s reprezentm mai multe
curbe pe aceeai figur cu mai multe instruciuni plot. Instruciunea
hold on
menine figura curent i proprietile axelor, astfel nct urmtoarele instruciuni plot
reprezint curbe pe aceeai figur. Instruciunea
44
hold off
reface modul implicit al instruciunii plot, de a terge graficele precedente i de a
reface proprietile iniiale ale axelor nainte de a desena un noi grafice.
Exemplu. Fie programul:
t = 0: 0.01: pi;
a = sin(2 * t);
b = cos(4 * t);
plot(t, a);
hold on
plot(t, b)
El traseaz dou curbe cu dou instruciuni plot pe aceeai figur.
Axele pot fi fcute vizibile sau invizibile cu opiunile on i off:
axis on
axis off
In unele cazuri avem nevoie s reprezentm simultan mai multe figuri. Dup cum am
spus mai nainte, acest lucru se face cu instruciunea
subplot (m, n, p)
care mparte figura ntr-o matrice de mxn axe i selecteaz axa p pentru reprezentarea
grafic ce se va face cu instruciunea plot urmtoare.
Ca exemplu vom reprezenta curbele sin(t), cos(t), sin
2
(t) i cos(t) n funcie de sin(t)
ntr-o matrice de patru figuri. Porgramul este urmtorul.
t = 0: pi/20: 2*pi;
x = sin(t);
y = cos(t);
z = x .* x;
subplot(2, 2, 1)
plot(t, x)
grid
xlabel('t[s]')
ylabel('sin(t)')
subplot(2, 2, 2)
plot(t, y)
grid
xlabel('t[s]')
ylabel('cos(t)')
subplot(2, 2, 3)
plot(t, z)
grid
xlabel('t[s]')
ylabel('sin^2(t)')
subplot(2, 2, 4)
plot(x, y)
grid
45
xlabel('sin(t)')
ylabel('cos(t)')
Rezultatul rulrii programului este cel din Figura 11.
Figura 11. Reprezentare grafic ntr-o matrice de figuri.
5.2 Editarea unei figuri
Figurile i componentele lor, aria de desenare, curbele, etichetele axelor, titlul, etc.,
sunt obiecte cu proprieti ce pot fi modificate. Modificarea proprietilor obiectelor
se poate face n dou feluri :
interactiv, cu editorul de proprieti,
prin program, cu instruciuni ce modific proprietile.
Vom prezenta n continuare cele dou moduri de prelucrare a figurilor.
Bara de meniu a unei figuri este cea din n Figura 12. Salvarea unei figuri se face cu
opiunile meniului File. Editarea figurii se face cu opiunile meniului Edit. Inserarea
de text, sgei sau linii, titlu, etc se poate face cu opiunile meniului Insert sau cu
butoanele barei de instrumente a figurii. Opiunile acestor meniuri sunt artate n
Tabelul 20.
Figura 12. Bara de meniu i bara de instrumente ale unei figuri.
46
a) meniul File b) meniul Edit c) meniul Insert
Tabelul 19. Meniurile File, Edit i Insert ale unei figuri.
Salvarea unei figuri se face cu opiunile Save sau Save As ale meniului File.
La editarea unei figuri se pot aduga text, linii sau sgei. Pentru aceasta se utilizeaz
butoanele barei de instrumente din Figura 12, vezi i Figura 13, sau opiunile Arrow,
Line i Text ale meniului Insert din Tabelul 19.
Figura 13. Butoane pentru editarea unei figure.
Semnificaia acestor butoane i a opiunilor meniului Insert este cea din Tabelul 20.
Buton Meniul Insert Semnificaie
Selecteaz figura
Text Adaug text
Arrow Adaug o sgeat
Line Adaug o linie
Tabelul 20. Inserarea de texte, linii sau sgei.
Procedura de adugare a unui text, a unei sgei sau a unei linii cu butoanele barei de
instrumente este urmtoarea :
1. se selecteaz figura cu un clic pe butonul sau prin afiarea meniul Insert,
2. clic pe unul din butoanele , sau , sau pe opiunile Text, Arrow, sau
Line ale meniului Insert,
3. se introduce textul, sgeata sau linia dorit.
5.3 Modificarea interactiv a proprietilor obiectelor grafice
O reprezentare grafic este format din obiecte grafice ce formeaz un arbore. La
primul nivel se afl un obiect numit root care reprezint ecranul. Pe urmtorul nivel
se gsesc obiectele tip figure (figurile). Obiectele tip figure au ca i componente
obiecte tip axes care reprezint axele (zona de desenare). Obiectele tip axes au ca i
47
componente obiecte tip line ce reprezint curbele. Acest arbore este afiat de Editorul
de proprieti ca n Figura 14.
Figura 14. Arborele unei figuri afiat de Editorul de proprieti.
Obiectele interesante sunt axes i line ce permit modificarea proprietilor axelor i
curbelor.
5.3.1 Modificarea proprietilor axelor
Obiectul axes reprezint zona de desenare : axele, etichetele axelor i titlul figurii, etc.
Proprietile obiectului axes sunt : tipul (numele fontului), dimensiunea i stilul
fontului utilizat n afiarea textelor de pe axe i din zona de desenare, unitatea de
msur (pixeli, inci, centimetri, etc.), limitele axelor, poziia axelor, culoarea zonei de
desenare, etc. Modificarea acestor proprieti se face cu editorul de proprieti.
Editorul de proprieti se lanseaz n mai multe moduri :
clic pe opiunea Axes Properties a meniului Edit,
clic pe opiunea Figure Properties a meniului Edit i n caseta Edit
Properties for se alege opiunea axes, vezi Figura 14,
se afiaz meniul contextual din Figura 15 dup procedura de mai jos i clic pe
opiunea Properties.
1. se selecteaz figura cu un clic pe butonul ,
2. se execut un clic cu butonul stng pe axe sau pe figur pentru selectare,
3. se execut un clic cu butonul drept pe figur, curb, legendele axelor, titlul
figurii care afiaz un meniu contextual. In Figura 15 este afiat meniul
contextual afiat la un clic pe figur.
4. se execut un clic pe opiunea Properties a acestor meniuri, ce afiaz caseta
editorului de proprieti.
Figura 15. Meniu contextual pentru editarea unei figuri.
Caseta editorului de proprieti pentru modificarea axelor, Property Editor Axes, are
cteva seciuni importante, seciunea Style din Figura 16 i seciunile X, Y, Z, vezi
Figura 17 pentru seciunea X.
48
Modificarea stilului (proprietilor) axelor, font (dimensiune, tip), etc., se face n
seciunea Style a casetei de dialog Property Editor Axes din Figura 16. In aceast
seciune se pot modifica :
titlul figurii n caseta de text Title,
stilul textului titlului se alege n seciunea text a editorului afiat cu un clic pe
butonul Properties,
culoarea fondului se alege din lista Background,
grosimea liniilor axelor se alege din lista Axes line width,
fontul, tip i dimensiune pentru axe se aleg din casetele Font name, Font size,
Font units, Font angle, etc.

Figura 16. Caseta Property Editor, seciunea Style.
Modificarea limitelor axelor se face n seciunile X, Y, Z ale casetei de dialog
corespunztoare. Caseta axei X este artat n Figura 17. Atunci cnd opiunea Limits
este validat, limitele sunt alese automat astfel nct este reprezentat ntreaga figur.
Pentru a modifica limitele pentru a afia doar o parte din figur se invalideaz
opiunea Limits i se aleg limitele dorite. Se mai pot modifica :
49
eticheta axei n caseta de text Label,
stilul textului etichetei axei, tipul fontului, dimensiune, culoare, etc., se alege
n seciunea Text a editorului afiat cu un clic pe butonul Properties,
culoarea axei se alege din lista Color,
scala, linear sau logaritmic, se alege validnd unul din butoanele din zona
Scale,
poziia axei se alege din lista Location.
Figura 17. Caseta Property Editor, modificarea limitelor axelor.
5.3.2 Modificarea proprietilor curbelor
Modificarea proprietilor liniei cu care se traseaz curba se face cu caseta de text
Property Editor Line din Figura 18. In seciunea Style a acestei casete se pot alege:
1. n seciunea Line Properties:
stilul liniei din lista Line style,
grosimea liniei din lista Line width,
culoarea liniei din lista Line color.
50
2. n seciunea Marker Properties:
simbolul cu care se marcheaz punctele curbei din lista Style,
dimensiunea simbolului din lista Size,
culoarea simbolului din lista Edge color.
Figura 18. Caseta Property Editor pentru modificarea proprietilor curbei.
Menionm c o serie de proprieti ale figurii, axelor, liniei se pot alege din opiunile
meniurilor contextuale afiate la un clic cu butonul drept pe figur, scala axelor,
etichetele axelor. Aceste meniuri sunt artate n Tabelul 21.
51
a) clic pe eticheta unei
axe sau titlul figurii
b) clic pe figur sau
axele figurii
c) clic pe curb,
text, linie, sgeat
Tabelul 21. Meniuri contextuale afiate la un clic pe figur.
In toate cazurile, un clic pe opiunea Properties afiaz caseta editorului de
proprieti. In meniul din Tabelul 21a se pot modifica dimensiunea, stilul i culoarea
fontului. In meniul din Tabelul 21c se modific grosimea, stilul i culoarea curbei, a
unei sgei, linii sau text. Opiunile Cut, Copy, Paste efectueaz operaiile respective
cu Clipboardul. Opiunea Clear terge obiectul respective.
In Figura 19 este artat o figur editat. S-au modificat stilul i dimensiunea fontului
axelor, eticheta axei X i titlul figurii.
Figura 19. Exemplu de figur editat.
52
Un alt exemplu de figur editat este cea din Figura 20. Aici s-au inserat o sgeat i
un text i s-au modificat stilul acestora i al curbei. Inserarea obiectelor s-a fcut
utiliznd bara de instrumente a figurii. Modificarea proprietilor se poate face cu
editorul de proprieti s-au utiliznd opiunile meniurilor contextuale afiate cu un clic
cu butonul drept al mousului pe obiect.
Figura 20. Exemplu de figur editat.
In cazul utilizrii Editorului de proprieti se afiaz arborele figurii, vezi Figura 21,
apoi se afiaz casete de dialog corespunztoare obiectelor de unde se aleg
proprietile dorite.
Figura 21. Ierarhia obiectelor grafice ale unei figuri.
53
5.4 Modificarea programat a proprietilor obiectelor grafice
O figur este compus din mai multe obiecte grafice. Obiectele grafice formeaz un
arbore care are ca rdcin un obiect numit Root care corespunde ecranului. Figurile,
(obiecte tip Figure), sunt urmtoarele obiecte grafice. De regul, ele sunt create
automat de funciile pentru reprezentri grafice, plot, etc. Toate figurile sunt copiii
obiectului Root. Orice alte obiecte grafice sunt copii ai unei figuri. Obiecte
interesante ale unei figuri sunt Axes, Line i Text. Obiectele tip Axes definesc axele,
o regiune n figur unde sunt reprezentate curbele. Obiectele Axes sunt prini ai
obiectelor de tip Line i Text. Obiectele tip Line sunt create de funciile pentru
reprezentri grafice, plot, etc. i reprezint curbele. Obiectele tip Text sunt create de
funciile title, xlabel i ylabel reprezint iruri de caractere.
Fiecare obiect grafic este identificat de o variabil handle care este rezultatul funciei
ce l creaz. Utiliznd aceast variabil handle se pot modifica proprietilor
obiectului grafic. Pentru modificarea proprietilor unui obiect se utilizeaz funcia set
cu forma
set(handle-obiect, NumeProprietate, ValoareProprietate)
Pentru a obine valoarea unei proprieti a unui obiect se utilizeaz funcia get cu
forma
get(handle-obiect, NumeProprietate)
In aceste instruciuni handle-obiect este variabila handle a obiectului. Pentru a obine
valoarea variabilei handle-obiect pentru diverse obiecte se utilizeaz funciile din
Tabelul 22.
Obiect grafic Funcie
Figure gcf
Axes gca
Obiectul curent selectat gco
Tabelul 22. Funcii ce dau variabila handle pentru obiecte grafice.
Instruciunea
get(handle-obiect)
afiaz toate proprietile obiectului identificat de variabila handle-obiect.
Ierarhia obiectelor grafice este cea din Figura 22. Dup cum se vede din Figura 22
obiectele de tip Line i Text sunt copiii obiectului Axes.
Figura 22. Ierarhia obiectelor grafice.
54
Aceast ierarhie este afiat i de Editorul de proprieti, vezi Figura 14. In continuare
vom prezenta proprietile importante ale obiectelor grafice.
Toate obiectele grafice au proprietile comune din Tabelul 23.
Proprietate Coninut
Parent Variabila handle-obiect a printelui
Children Vector cu variabile handle-obiect ale copiilor
Type Tipul obiectului
Tabelul 23. Proprieti comune obiectelor grafice.
Stergerea unui obiect grafic se face cu funcia
delete(handle-obiect)
5.4.1 Obiectul Root
Obiectul Root reprezint ecranul. Proprietile interesante ale acestui obiect sunt cele
din Tabelul 24.
Proprietate Valori
ScreenSize [left, bottom, width, height]
Units {pixels, inches, centimeters, points}
Tabelul 24. Proprietile obiectului Root.
Obiectul Root are handle 0.
Toate celelalte obiectele grafice au proprietile comune referitoare la font din Tabelul
25.
Proprietate Valori
FontAngle {normal, italic, oblic}
FontName {Courier, FixedWidth}
FontSize Dimensiunea fontului n FontUnits
FontUnits {points, normalized, pixels, inches}
FontWeight {normal, bold, light}
Tabelul 25. Proprieti commune obiectelor grafice relative la font.
5.4.2 Obiectul Figure
Proprietile obiectului Figure sunt cele din Tabelul 26.
Proprietate Valoare
Position [left, bottom, width, height]
Units {pixels, inches, centimeters, points}
DefaultAxesColor {b, g, r, c, m, y, k}
CurrentAxes Sistemul curent de axe
Tabelul 26. Proprietile obiectului Figure.
Proprietatea Position este un vector cu patru componente ce dau poziia fa de colul
stnga jos al ecranului i dimensiunile figurii. Unitatea de msur este dat de
proprietatea Units. Sistemul curent de axe este variabila handle a obiectului Axes
creat cu funcia axes. De regul, figurile sunt create de funciile pentru reprezentri
grafice, plot, etc.
Obiectul figure poate fi creat cu funcia
55
hf = figure (proprietate, valoare, )
unde hf este variabila handle a obiectului.
La crearea unei figuri ne intereseaz proprietatea ScreenSize a obiectului Root. Ea se
obine ca
scrsz = get(0, ScreenSize)
rezultatul este un vector cu patru componente, [left, bottom, width, height]. La crearea
unei figuri, aceste componente pot fi utilizate pentru a defini poziia figurii pe ecran.
5.4.3 Obiectul Axes
Obiectul Axes corespunde zonei de desenare n care sunt reprezentate axele, curbele
i textele afiate pe axe sau n zona de desenare. Obiectul axes se creaz cu
instruciunea
haxes = axes(proprietate, valoare, )
unde haxes este variabila handle a obiectului.
Orice figur are un sistem curent de axe (aria curent de desenare). Acest sistem de
axe este proprietatea CurrentAxes a figurii i este variabila handle a unui sistem de
axe creat cu funcia axes. De exemplu, instruciunile
ha = axes()
set(gcf, currentaxes, ha)
creaz un sistem de axe i l face sistemul curent de axe al figurii.
Obiectul Axes are proprietile din Tabelul 27. Ele reprezint poziia zonei de
desenare n figur, poziia axelor, etichetele axelor i titlul, culoarea axelor i a
textului.
Proprietate Valoare
Position [left, bottom, width, height]
OuterPosition [left, bottom, width, height]
Units {pixels, inches, centimeters, points}
XAxisLocation {top, bottom}
YAxisLocation {left, right}
Color {none, [r, g, b]}
XColor {b, g, r, c, m, y, k}
YColor {b, g, r, c, m, y, k}
XLabel Variabila handle-obiect a axei X
YLabel Variabila handle-obiect a axei Y
Title Variabila handle-obiect a titlul figurii
Tabelul 27. Proprietile obiectului Axes.
Proprietatea Position este un vector cu patru componente ce specific dreptunghiul ce
ncadreaz zona de desenare. left i bottom dau poziia colului stnga jos al
dreptunghiului fa de colul stnga jos al figurii. width i height dau dimensiunile
dreptunghiului, vezi Figura 23. Unitatea de msur este dat de proprietatea Units.
Proprietatea OuterPosition este tot un vector cu patru componente ce specific
dreptunghiul ce incadreaz zona de desenare, axele i titlul. left i bottom dau poziia
colului stnga jos al dreptunghiului fa de colul stnga jos al figurii. width i height
dau dimensiunile dreptunghiului. Unitatea de msur este dat de proprietatea Units.
Pentru a modifica, de exemplu, dimensiunea fontului axelor la valoarea 18 se
utilizeaz funcia
set(gca, FontSize, 18)
56
Figura 23. Poziia axelor n cadrul unei figuri.
Celelalte proprieti ale obiectului Axes sunt evidente. Codurile culorilor sunt cele din
Tabelul 16. Exemple de utilizare a acestor proprieti vor fi prezentate ulterior.
5.4.4 Obiectul Line
Obiectul Line reprezint o curb. Proprietile acestui obiect sunt cele din Tabelul 28.
Proprietate Valoare
XData Vector cu abscise
YData Vector cu ordonate
Color {b, g, r, c, m, y, k}
Tabelul 28. Proprietile obiectului Line.
Un obiect Line este creat cu instruciunea line de forma
hline = line (proprietate, valoare, )
unde hline este variabile handle a obiectului.
5.4.5 Obiectul Text
Obiectul Text reprezint un ir de caractere creat i afiat de instruciunile xlabel,
ylabel, title. Obiectul Text are proprietile din Tabelul 29.
Proprietate Valoare
String text
HorizontalAlignment {left, center, right}
VerticalAlignment {top, middle, bottom}
Interpreter {latex, tex, none}
Units {points, normalized, pixels, centimeters}
Position [x, y]
Tabelul 29. Proprietile obiectului Text.
Opiunea normalized a proprietii Units transform colul din stnga jos al
dreptunghiului figurii n (0, 0) i cel din dreapta sus n (1, 1).
Un obiect text este creat cu funcia text are forma
ht = text(x, y, sir de caractere)
sau forma
ht = text(x, y, sir de caractere, NumeProprietate, ValoareProprietate)
Funcia text are ca rezultat variabila handle al obiectului creat, ht.
57
Funcia scrie textul dintre apostrofuri n punctul de coordonate (x, y) al figurii. x i y
pot fi vectori, caz n care textul este scris n toate perechile de coordonate date de x i
y. Dac textul este un tablou cu acelai numr de linii ca dimensiunea vectorilor x i
y, atunci funcia text afiaz n fiecare punct linia corespunztoare din tablou.
Parametri NumeProprietate i ValoareProprietate dau caracteristicile textului: tipul i
dimensiunea fontului, etc.
Exemplu. Vom reprezenta grafic funcia sin(t) creind direct figura, aria de desenare, i
curba. Vom crea o figur cu limea jumtatea din laimea ecranului i nlimea
jumtatea din nlimea ecranului. Poziia punctului din stnga jos va fi (1, limea
ecranului / 2). Dimensiunile ecranului, n pixeli, se obin cu funcia
scrsz = get(0, 'screensize')
Figura se creaz cu instruciunea
hf = figure('position', [1, scrsz(4)/2, scrsz(3)/2, scrsz(4)/2])
Vom crea o arie de desenare cu instruciunea
ha = axes('position', [0.13, 0.11, 0.775, 0.815])
pentru a avea loc pentru etichetele axelor.
Vom reprezenta grafic o funcie cu instruciunea
hl = line(t, st)
Programul este cel de mai jos.
t = 0: 0.01: 2*pi;
st = sin(t);
scrsz = get(0, 'screensize')
scrsz =
1 1 1440 900
hf = figure('position', [1, scrsz(4)/2, scrsz(3)/2, scrsz(4)/2])
hf =
1
ha = axes('position', [0.13 0.11 0.775 0.815])
ha =
158.0076
hl = line(t, st)
hl =
159.0076
thx = text('string', 't')
thx =
160.0076
set(ha, 'xlabel', thx)
58
thy = text('string', 'sin(t)')
thy =
161.0077
set(ha, 'ylabel', thy)
grid
Rezultatul fiecrei funcii a programului este cel din figurile de mai jos. Menionm
c, odat curba creat, etichetele axelor se puteau crea i cu funciile xlabel i ylabel.
Figura 24. Figura creat cu instruciunea figure.
59
Figura 25. Figura i aria de desenare.
Figura 26. Figura, aria de desenare i curba.
60
Figura 27. Figura, aria de desenare, curba i etichetele axelor.
5.4.6 Modificarea proprietilor obiectelor grafice
In acest paragraf vom exemplifica modificarea proprietilor obiectelor grafice ce
constituie o figur.
Putem de exemplu afla eticheta axei X astfel :
% fa este variabila handle-obiect a obiectului axes
fa = get(gca)
% afiaz proprietile obiectului axes
get(fa)
% fxlabel este variabila handle-obiect a obiectului axa X
fxlabel = get(fa, xlabel)
% obine valoarea proprietii string a obiectului axa X
% care este eticheta axei X
get(fxlabel, string)
Vom exemplifica utilizarea obiectelor grafice cu un program care reprezint grafic
funcia sin() pe intervalul [0, 2 ]. Vom scrie urmtoarele texte:
pe axa y textul sin(),
pe axa x textul 0 2 ,
textul titlului va fi Plot of sin(),
n punctul (, 0) vom afia mesajul sin().
Toate textele vor fi scrise cu font cu dimensiunea 14. Pentru aceasta vom pune
proprietatea FontSize a obiectului Axis la valoarea 14 cu instruciunea
set(gca, 'FontSize', 14)
Programul este urmtorul
61
t = 0: 0.01: 2 ;
x = sin(t);
plot(t, x)
set(gca, 'FontSize', 14)
title('Plot of sin(\Theta)')
xlabel('0 \leq \Theta \leq \pi')
ylabel('sin(\pi )')
text(pi, 0, '\leftarrow sin(\pi)', 'FontSize', 14)
grid
Rezultatul programului este cel din Figura 28.
Figura 28. Reprezentarea grafic a funciei sin() pe intervalul [0, 2 ].
Textul mesajului este scris n punctual de coordinate (, 0) la scala axelor.
Ca un alt exemplu vom reprezenta grafic o curb n partea dreapt a unei figuri iar n
partea stng vom scrie parametrii curbei. Fie curba
) sin( * t Ae y
t


, t = [0, 4]
Textul cu parametrul curbei este definit sub forma unui vector de celule. Vom utiliza
funcia axes care creaz axele ntr-o poziie arbitrar. Funcia
axes(position, [left, bottom, width, height])
creaz axele (o zon de desenare) n dreptunghiul [left, bottom, width, height] relativ
la colul stnga jos al figurii, n uniti normalizate, unde (0, 0) este colul din stnga
jos, iat (1, 1) este colul din dreapta sus, i d un handle la obiectul creat.
62
In exemplul nostru vom crea mai nti un sistem de axe invizibil cu instruciunea
h = axes('position', [0 0 1 1], 'visible', 'off');
Apoi vom face acest sistem de axe sistemul current de axe al figurii.
set(gcf, 'currentAxes', h)
Vom scrie apoi parametrii curbei cu o instruciune text. Vom crea apoi un nou sistem
de axe n dreapta figurii cu instruciunea
axes('position', [.25 .1 .7 .8]);
i vom reprezenta grafic curba cu o instruciune plot.
t=0: 0.01: 4;
str(1) = {'Plot of the function'};
str(2) = {'y=A{\ite}^{-\alpha{\itt}}*sin(-\alpha{\itt})'};
str(3) = {'with the values'};
str(4) = {'A=0.25'};
str(5) = {'\alpha = 0.05'};
str(6) = {'t = 0: 0.01: 4'};
h = axes('position', [0 0 1 1], 'visible', 'off');
set(gcf, 'currentAxes', h)
text(0.05, .6, str, 'FontSize', 8)
axes('position', [.25 .1 .7 .8]);
A = 0.25 ;
alfa = 0.05 ;
z = A*exp(-alfa*t) .* sin(-alfa *t);
plot(t, z)
grid
Rezultatul programului este cel din Figura 29.
63
Figura 29. Reprezentarea unei curbe.
Ca un alt exemplu vom reprezenta dou curbe pe acelai grafic n dou sisteme de
axe. Culoarea zonei de desenare va fi verde. Pentru acesta vom utiliza instruciunea
set(gcf, 'defaultaxescolor', 'g');
Fie (x1, y1) vectorii cu perechi de puncte ai primei curbe. Aceast curb va fi trasat
cu culoarea roie cu o instruciune de forma
h11 = line(x1, y1, color, r);
Poziia axelor acestei curbe este cea implicit, la stnga i jos. Vom prescrie culoarea
celor dou axe roie. Pentru aceasta se obine variabila handle a obiectului Axes
corespunznd curbei i apoi se prescriu culorile axelor.
ax1 = gca;
set(ax1, 'XColor', 'r', 'YColor', 'r');
Se creaz un nou obiect Axes cu aceeai poziie cu obiectul Axes al primei curbe,
poziia axelor fiind sus i dreapta, culoare axelor neagr:
ax2 = axes('position', get(ax1, 'position'), ...
'XAxisLocation', 'top', 'YAxisLocation', 'right', ...
'Color', 'none', 'XColor', 'k', 'YColor', 'k');
Se reprezint a doua curb n noile axe, noul obiect Axes fiind printele obiectului
Line ce reprezint curba (x2, y2).
h12 = line(x2, y2, 'Color', 'k', 'parent', ax2);
Programul final este cel de mai jos.
x1 = [0:.1: 40];
64
y1 = 4 .* cos(x1) ./ (x1 + 2);
x2 = [1: .2: 20];
y2 = x2 .^ 2 ./ x2 .^ 3;
set(gcf, 'defaultaxescolor', 'g');
h11 = line(x1, y1, 'color', 'r');
ax1 = gca;
set(ax1, 'XColor', 'r', 'YColor', 'r');
ax2 = axes('position', get(ax1, 'position'), ...
'XAxisLocation', 'top', 'YAxisLocation', 'right', ...
'Color', 'none', 'XColor', 'k', 'YColor', 'k');
h12 = line(x2, y2, 'Color', 'k', 'parent', ax2);
grid
Rezultatul rulrii programului este cel din Figura 30.
Figura 30. Reprezentarea a dou curbe pe un grafic.
Obiectul Figure are proprietatea CurrentObject ce conine variabila handle-object a
ultimului obiect grafic din figur selectat de utilizator. Valoarea acestei variabile este
dat de funcia gco sau cu instruciunea
get(gcf, CurrentObject)
Cunoscnd variabila handle-object a obiectului selectat se pot modifica proprietile
acesteia. Obiectul selectat poate fi Axes, Line sau Text adugat de utilizator pe figur.
65
6 Transformata Fourier discret
Fie x(t) o funcie de timp i fie x vectorul valorilor eantionate ale funciei
x = (x
1
, x
2
, , x
N
)
Transformata Fourier discret a funciei este
X = (X
1
, X
2
, , X
N
)
unde numerele X
i
sunt date de relaia
( ) ( )
( ) ( )

N
n
N
n k j
e n x k X
1
1 1 2
, N k 1
Transformata Fourier discret invers se calculeaz cu relaia
( ) ( )
( ) ( )

N
k
N
n k j
e k X
N
n x
1
1 1 2
1

, N n 1
Vom exemplifica cele de mai sus reprezentnd transformata Fourier discret a unui
semnal. Fie funcia de timp
x(t) = sin(2 * pi * 50 * t) + 1.5 * sin(2 * pi * 100 * t) + ...
sin(2 * pi * 200 * t) + .5 * sin(2 * pi * 350 * t)
Funcia ce calculeaz transformata Fourier discret este
fft(x)
unde x este vectorul valorilor funciei de timp n puncte echidistante. Funcia
ifft(X)
calculeaz transformata Fourier invers.
Se va scrie o funcie Matlab care calculeaz transformata Fourier rapid a lui x(t) i
reprezint pe x(t), modulul Xm i argumentul Xf al transformatei Fourier n trei
ferestre. Se vor reprezenta grafic jumtate din punctele transformatei Fourier. Se
noreaz T perioada de eantionarei fe = 1 / T frecvena de eantionare. Frecvenele
pentru care se reprezint tansformata Fourier sunt
[ ] 2 / : 0
*
N k
N
f k
f
e
k

Funcia Matlab este urmtoarea
function testx
t = 0: 0.001 : 0.511;
fe = 1 / (t(2) - t(1)); % 1 / T
x = sin(2 * pi * 50 * t) + 1.5 * sin(2 * pi * 100 * t) + ...
sin(2 * pi * 200 * t) + .5 * sin(2 * pi * 350 * t);
Xt = fft(x);
Xm = abs(Xt);
Xf = angle(Xt);
N = length(x);
X = Xm(1: N / 2 + 1);
f = [0: N / 2] * fe / N; % k * fe / N, k = [0: N /2]
Xfaza = Xf(1: N / 2 + 1);
% afisaza x
subplot(2, 2, 1)
plot(t, x);
grid
66
xlabel('t [s]')
ylabel('x')
% afisaza modulul, |Xt|
subplot(2, 2, 3)
plot(f, X)
grid
xlabel('f [Hz]')
ylabel('amplitudine')
% afisaza faza, arg(Xt)
subplot(2, 2, 4)
plot(f, Xfaza)
grid
xlabel('f [Hz]')
ylabel('faza [Rad]')
Rezultatul execuiei acestei funcii este cel din Figura 31
Figura 31. Funcie de timp i transformata Fourier discret.
Rezultatele cu graficele n form de bare sunt artate n Figura 32.
67
Figura 32. Funcie de timp i transformata Fourier discret.
68
7 Integrarea ecuaiilor difereniale ordinare
Fie o ecuaie diferenial ordinar de forma
x
'
= f(t, x)
unde t este variabila independent, de regul timpul. Se cere determinarea soluiei
ecuaiei pe un interval dat, [t
0
, t
f
], n condiia iniial x(t
0
) = x
0
dat.
Determinarea soluiei ecuaiei se face utiliznd o metod de integrare existent n
Matlab. Metodele de integrare apeleaz o funcie care calculeaz membrul drept al
ecuaiei difereniale (derivata). Funcia are forma
xdot = valdot(t, x)
unde t i x sunt parametrii de intrare ai funciei:
t timpul,
x vectorul soluiei la momentul t.
Funcia valdot calculeaz derivata xdot la momentul t. xdot este un vector coloan.
Funcia respectiv este scris ca un fiier cu extensia m i este parametru al metodei
de integrare (un handle al acestei funcii este pasat metodei de integrare).
Exemplu. Fie ecuaia diferenial
y'' + 3y' + 2y = 0
n condiiile iniiale y
0
= 1, y
0
' = 0.
Funcia pentru calculul derivatelor este
function xdot = valdot(t, x)
xdot(1) = x(2);
xdot(2) = -3 * x(2) 2 * x(1);
xdot = xdot
'
;
Funcia se scrie urmnd procedura de transformare a unei ecuaii difereniale ordinare
de ordin superior ntr-un sistem de ecuaii difereniale ordinare de ordinul I.
Reamintim c, vectorul derivatelor trebuie s fie coloan, astfel nct n ultima
instruciune din funcie se transpune vectorul xdot.
Dou metode existente n Matlab sunt cele de tip Runge-Kutta de ordin 2 i 4. Forma
funciilor corespunztoare este
[ ] ( )
0
, , @
45
23
x ts valdot
ode
ode
x t

'


unde vectorul t
s
= [t
0
, t
f]
conine limitele intervalului pe care se calculeaz soluia, iar
x
0
este vectorul condiiilor iniiale. Funcia valdot calculeaz derivata ca mai sus.
Vom calcula soluia ecuaiei de mai sus pe 5 s n condiiile iniiale y
0
= 1 i y'
0
= 0.
Programul este urmtorul:
ts = [0 5];
x0 = [1 0]';
[t x] = ode45(@valdot, ts, x
0
);
plot(t, x)
grid
xlabel('t [s]')
legend('x', 'x''')
Soluia ecuaiei este reprezentat n Figura 33.
69
Funciile Matlab ce integreaz ecuaii difereniale ordinare ajusteaz dimensiunea
pasului de integrare pn la satisfacerea unui criteriu de eroare. Parametrii metodei de
integrare se pot prescrie cu funcia odeset de forma
options = odeset('numeparametru', valoare, )
Parametrii ce se pot prescrie sunt
RelTol eroarea relativ,
AbsTol eroarea absolut,
InitialStep valoarea iniial a pasului de integrare,
MaxStep valoarea maxim a pasului de integrare.
Funciile estimeaz eroarea la un pas de integrare calculnd soluia odat cu un pas de
integrare h i apoi cu pasul h/2.
Eroarea relativ este o valoare scalar, pozitiv. Implicit ea este aleas egal cu 1e-3.
Eroarea absolut este un scalar sau un vector cu componente pozitive pentru fiecare
component al soluiei. Implicit ea este aleas egal cu 1e-6.
Pasul de integrare h se njumtete pn cnd eroarea estimat satisface relaia
e(i) < max(RelTol * abs(y(i)), AbsTol(i))
Figura 33. Soluia ecuaiei difereniale y'' + 3y' + 2y = 0 n condiiile iniiale y0=1, y'0=0.
Parametrul options, dac exist, va fi al patrulea parametru al funciei de integrare, ca
n exemplul de mai jos.
[t, x] = ode45(@valdot, ts, x0, options)
70
In unele cazuri, ecuaia diferenial ordinar depinde de parametri. Este de dorit ca
aceti parametri s fie pasai funciei de integrare, care la rndul ei s i paseze ca
parametri funciei ce calculeaz membrul drept al ecuaiei difereniale. Fie de
exemplu ecuaia diferenial ordinar
y'' + p
1
y' + p
2
y = 0
n condiiile iniiale y
0
= 1, y
0
' = 0. p
1
i p
2
sunt parametri.
Vom pune ecuaia sub forma sistemului de ecuaii difereniale de ordinul I.
x
1
' = x
2

x
2
' = -p
1
* x
2
p
2
* x
1
In acest caz p
1
i p
2
trebuie s fie parametri ai funciei fct ce calculeaz membrul drept
al sistemului de ecuaii difereniale de ordin I, ca mai jos
function dx = fct(t, x, p1, p2)
dx(1) = x(2);
dx(2) = -p1 * x(2) p2 * x(1);
dx = dx'
Vom apela funcia ode45 cu aceti parametri n felul urmtor
ts = [0 10];
x0 = [1 0]';
[t, x] = ode45(@fct, ts, x0, [], p1, p2);
Parametrii ce intervin n funcia de calcul al derivatelor, se scriu n expresia funciei
de integrare dup parametrul options. In exemplul de mai sus, parametrul options este
un vector vid, [], deoarece nu a fost definit. Programul de integrare a ecuaiei
difereniale pentru valorile -2, -3 i -0.4, -0.6 pentru parametrii p
1
i p
2
este urmtorul.
ts = [0, 12];
x0 = zeros(2,1);
[t, x] = ode45(@chpar, ts, x0, [], -2, -3);
[t1, x1] = ode45(@chpar, ts, x0, [], -0.4, -0.6);
plot(t, x(:, 1), t1, x1(:, 1))
grid
xlabel('t[s]')
Soluia ecuaiei difereniale, pentru cele dou seturi de valori ale parametrilor p
1
i p
2
,
este cea din Figura 34.
71
Figura 34. Soluia ecuaiei difereniale y'' + p1 y' + p2 y = 0 n condiiile iniiale y0=1, y'0=0,
pentru diverse valori ale parametrilor.
72
8 Filtre numerice
Un filtru numeric este descris de ecuaia cu diferene
1 1 2 1 1 1 2 1 + +
+ + + + + +
m n m n n k n k n n
u b u b u b y a y a y a
sau, echivalent, de funcia de transfer
( )
k
k k
m
m m
a z a z a
b z b z b
z H
+ + +
+ + +

1
2 1
1
2 1
Calculul ieirii filtrelor numerice cu o intrare i o ieire se face cu funcia
y = filter(b, a, u)
Vectorii a i b din definiia funciei conin coeficienii filtrului. Vectorul u conine
valorile intrrii. Vectorul y conine ieirea filtrului.
Exemplu. Fie sistemul descris de funcia de transfer
125 . 0 75 . 0
5 . 0
) (
2
+

z z
z
z H
Intrarea este
Figura 35. Intrarea filtrului numeric.
Funcia pentru calculul ieirii este cea de mai jos.
function flt
a = [1, -0.75, 0.125];
b = [0, 1, -0.5];
x=[5 5 5 5 5 -5 -5 -5 -5 -5 5 5 5 5 5 -5 -5 -5 -5 -5 0 0 0 0 0];
y = filter(b, a, x);
dm = size(x);
sz = dm(2);
t = 1: 1: sz;
plot(t, x, t, y);
grid
xlabel('t')
ylabel('u, y')
Rezultatul funciei este cel din Figura 36.
73
Figura 36. Intrarea i ieirea filtrului numeric.
74
9 Rezolvarea ecuaiilor algebrice neliniare
Rezolvarea sistemelor de ecuaii algebrice neliniare se face cu funcia fsolve. Fie un
sistem de ecuaii neliniare
f(x) = 0
unde x este un vector cu n componente, iar f(x) este o funcie vectorial cu n
componente. Funcia fsolve are ca parametri funcia f(x) i punctul iniial x0. Funcia
f(x) poate fi definit ntr-un fiier .m.
Funcia fsolve poate avea ca parametru de intrare i o structur options ce conine
criterii de oprire a calculului, modul de afiare a rezultatelor, etc. Structura options se
creaz cu funcia optimset cu forma
options = optimset(param1, val1, param2, val2, )
unde parami este numele unui parametru i vali este valoarea acelui parametru.
Parametrii ce se pot prescrie sunt:
MaxIter numrul maxim de iteraii,
TolFun tolerana valorii funciei; minimizarea se termin atunci cnd
valoarea funciei ntre iteraii se modific mai puin dect TolFun,
TolX tolerana punctului x; minimizarea se termin atunci cnd punctul x
ntre iteraii se modific mai puin dect TolX.
Display modul de afiare a rezultatelor [ off | iter | notify | final ]; iter afiaz
rezultatele dup fiecare iteraie, final afiaz doar rezultatul final.
Funcia fsolve are urmtoarele forme:
funcia
x = fsolve(fun, x0)
are ca rezultat punctul de minim x al funciei fun. x0 este punctul iniial, iar x
este punctul n care funcia atinge minimul,
funcia
x = fsolve(fun, x0, options)
are ca rezultat punctual de minim x al funciei fun. x0 este punctul iniial, iar
options este o structur cu criterii de oprire a minimizrii care primete valori
ca mai sus,
funcia
[x, fval] = fsolve(fun, x0, )
are ca rezultat punctul de minim x al funciei fun i valoarea funciei, fval, n
acest punct,
funcia
[x, fval, exitflag] = fsolve(fun, x0, )
are ca rezultat i variabila exitflag cu condiiile de oprire a minimizrii:
0numrul maxim de iteraii mai mare ca Maxiter,
1mrimea gradientului mai mic dect cea specificat,
2modificarea n x mai mic dect TolX,
3 modificarea n funcia obiectiv mai mic dect TolFun.
Exemplu. S rezolvm sistemul de ecuaii neliniare
x
2
-2y
2
+ 4.82 = 0
2x + 4y
2
-16.74 = 0
Punctul iniial este x0 = 1.3 i respectiv y0 = 1.7.
Funcia se definete n fiierul fval.m ca mai jos
75
function f = fval(x)

f(1) = x(1) * x(1) - 2 * x(2) * x(2) + 4.82;
f(2) = 2 * x(1) + 4 * x(2) * x(2) - 16.74;
Apelm funcia fsolve cu forma
x = fsolve(@fval, [1.3 1.7]')
i obinem rezultatul
Optimization terminated: first-order optimality is less than
options.TolFun.
x =
1.4494
1.8602
Apelm funcia fsolve cu forma
[x f] = fsolve(@fval, [1.3 1.7]')
i obinem rezultatul
Optimization terminated: first-order optimality is less than
options.TolFun.
x =
1.4494
1.8602
f =
1.0e-009 *
-0.1235 0.4388
Apelm funcia fsolve cu forma
[x f exitflag] = fsolve(@fval, [1.3 1.7]')
i obinem rezultatul
Optimization terminated: first-order optimality is less than
options.TolFun.
x =
1.4494
1.8602
f =
76
1.0e-009 *
-0.1235 0.4388
exitflag =
1
77
10 Interpolarea funciilor
Fie o funcie f(x) ale crei valori sunt date prin perechi de puncte (x
i
, y
i
), i = 1, n.
Pentru a determina valoarea funciei ntr-un punct x se interpoleaz ntre valorile
funciei corespunznd punctelor x
i
.
Funcia Matlab de interpolare este interp1 cu formele:
YA = interp1(X, Y, XA)
YA = interp1(X, Y, XA, 'metoda')
Vectorii X i Y conin punctele x
i
i respectiv y
i
. Punctele x
i
sunt n ordine
cresctoare. interp1 calculeaz YA, valoarea funciei n punctul XA. Dac XA este
scalar, interp1 calculeaz valoarea funciei n acest punct. Dac XA este vector,
rezultatul YA este un vector cu valorile funciei n punctele din vectorul XA. Un
exemplu este cel de mai jos.
xtab = [10 16 25 32 40 100 250];
ytab = [1.6 2.1 2.5 3 3.5 4 5];
a = 32;
rez = interp1(xtab, ytab, a);
In forma a doua se poate specifica metoda de interpolare. Metode disponibile sunt
'linear' i 'cubic'. In prima form se utilizeaz interpolarea liniar.
78
11 Operaii cu polinoame
Fie polinomul
A(x) = a
1
x
n
+ a
2
x
n-1
+ + a
n
x + a
n+1
cu coeficieni reali sau compleci. Acest polinom este dat prin vectorul coeficienilor
A = (a
1
a
2
a
n
a
n+1
)
Calculul rdcinilor polinomului se face cu funcia
R = roots(A)
care are ca rezultat vectorul R cu rdcinile polinomului.
Exemplu. Fie polinomul
A(x) = (1 + 2i)x
2
+ 2.3x + 5.2
Calculul rdcinilor polinomului se face ca mai jos.
A = [1+2i 2.3 5.2];
R = roots(A)
R =
0.4846 + 1.7674i
-0.9446 - 0.8474i

Calculul valorii polinomului A n punctual x se face cu funcia
polyval(A, x)
Valoarea polinomului A(x) n punctul x = 2 3.5i este
polyval(A, 2-3.5i)
ans =
29.5500 -38.5500i
Valoarea polinomului A pentru prima rdcin este
polyval(A, R(1))
ans =
0 +1.7764e-015i
79
12 Interfee grafice
Limbajul Matlab are posibilitatea de a construi interfee grafice. Exist dou moduri
de a construi o interfat grafic :
cu aplicaia GUIDE,
prin utilizarea funciilor Matlab de creare a unei interfee grafice.
12.1 Construirea unei interfee grafice cu aplicaia GUIDE
12.1.1 Descrierea aplicaiei GUIDE
Aplicaia GUIDE este un mediu de dezvoltat interfee grafice. Aplicaia GUIDE se
lanseaz din linia de comand cu instruciunea
guide
Comanda guide lanseaz editorul Layout care afiaz caseta de dialog GUIDE Quick
Start din Figura 37.
Figura 37. Caseta de dialog GUIDE Quick Start.
Seciunea Create New GUI permite alegerea unui ablon de interfa grafic.
Seciunea Open Existing GUI deschide o interfa grafic existent.
Crearea unei noi interfee grafice se face astfel:
n seciunea Create New GUI se selecteaz ablonul Blank GUI (Default),
clic pe butonul OK i editorul Layout afiaz o interfaa grafic goal ca n
Figura 38.
In partea stng a ferestrei este afiat paleta de componente din care se pot insera
diverse obiecte grafice: butoane, meniuri, casete de text, etc. In partea dreapt a
ferestrei se afl aria de desenare n care se insereaz componentele interfeei.
80
Dimensiunile interfeei se pot modifica prin tragerea butonului din dreapta jos a ariei
de desenare din Figura 38.
Figura 38. Fereastra editorului Layout. Interfa grafic goal afiat cu opiunea Blank GUI.
Meniul File din Tabelul 30 are n general opiunile cunoscute. O parte din opiuni se
pot activa i din butoanele barei de instrumente din Figura 39.
Figura 39. Bara de instrumente a aplicaiei GUIDE.
Tabelul 30. Meniul File al editorului Layout.
81
Opiunile meniului File sunt urmtoarele:
opiunea New i butonul afiaz caseta de dialog GUIDE Quick Start din
Figura 37,
opiunea Open i butonul afiaz caseta de dialog pentru deschiderea unei
interfee grafice existente,
opiunea Close nchide editorul Layout,
opiunea Save i butonul salveaz interfaa creat,
opiunea Save As salveaz interfaa grafic creat sub un nume nou,
opiunea Preferences afiaz caseta de dialog Preferences unde se pot alege
diverse opiuni ale mediului de programare Matlab; Figura 40 prezint
seciunea corespunztoare aplicaiei GUIDE; aici se va marca opiunea Show
names in component palette i, n paleta de componente, se vor afia i
numele componentelor; fereastra editorului Layout va arta ca n Figura 41.
Figura 40. Caseta de dialog Preferences cu opiunile aplicaiei GUIDE.
Meniul File afiaz i ultimele patru interfee grafice create.
82
Figura 41. Fereastra editorului Layout. Interfa grafic goal afiat cu opiunea Blank GUI.
Paleta cu componente afiaz i numele componentelor.
Aria de desenare se poate poate modifica astfel nct s afieze sau s ascund riglele
pe cele dou axe, s afiaze sau s ascund grila de desenare, s modifice distana
ntre liniile grilei, etc. Aceste opiuni se activeaz n caseta de dialog Grid and Rulers
din Figura 42, afiat cu un clic pe opiunea Grid and Rulers a meniului Tools.
Figura 42. Caseta de dialog Grid and Rulers.
Aria de desenare cu opiunea Show rulers activat este artat n Figura 43. In acest
caz se pot vedea coordonatele cursorului.
83
Figura 43. Aria de desenare cu opiunea Show rulers activat.
Putem trasa linii pentru ghidarea alinierii componentelor ca n Figura 44
Figura 44. Linii pentru ghidarea alinierii componentelor.
84
Acest lucru se face cu clic pe rigla orizontal sau vertical dup care se trage linia n
interiorul zonei de desenare cu butonul stng al mousului apsat. Liniile odat trasate,
se pot deplasa cu butonul stng al mousului apsat.
12.1.2 Crearea interfeei grafice
Componentele interfeei grafice se selecteaz n paleta cu componente din partea
stng i se trag n aria de desenare din partea dreapt (drag and drop). Figura 45 arat
o interfat grafic cu elementele plasate n aria de desenare.
Elementele interfeei grafice se pot copia, terge, muta, etc., cu opiunile meniului
Edit, cu butoanele barei de instrumente sau cu opiunile meniului contextual al
obiectului, selectat cu un clic cu butonul drept pe obiect, vezi Tabelul 31.
a) meniul Edit b) meniu contextual
Tabelul 31. Meniul Edit i meniu contextual al unui obiect grafic.
Semnificaia opiunilor meniului Edit este urmtoarea :
opiunea Cut i butonul mut componentul selectat n Clipboard,
opiunea Copy i butonul copiaz componentul selectat n Clipboard,
opiunea Paste i butonul copiaz componentul din Clipboard,
opiunea Clear terge componentul selectat,
opiunea Select All selecteaz toate componentele interfeei grafice,
opiunea Duplicate creaz un nou component de tipul celui selectat,
opiunea Undo i butonul anuleaz ultima comand,
opiunea Redo i butonul execut ultima comand.
Obiectele componente ale interfeei se pot selecta n mai multe feluri :
un component al interfeei se poate selecta cu un clic de mouse,
mai multe componente se pot selecta cu clic de mouse pe cte un component i
tasta Ctrl inut apsat,
toate componentele interfeei se selecteaz cu un clic pe opiunea Select All a
meniului Edit.
Aciunile Cut, Copy, Duplicate i Clear se execut asupra unui obiect selectat.
O parte din opiunile meniului Edit exist i n meniul contextual al obiectului afiat
cu un clic cu butonul drept pe obiect, vezi Tabelul 31.
85
Figura 45. Interfa grafic.
Dup plasarea elementelor n aria de desenare, elementele nu sunt n general aliniate,
au numele obiectului grafic din paleta de obiecte, iar secvena de deplasare de la un
obiect la altul cu tasta Tab este cea n care au fost adugate interfeei. Interfaa grafic
cu elementele plasate n aria de desenare poate fi modificat astfel:
obiectele pot fi aliniate orizontal i vertical,
se poate prescrie secvent de deplasare de la un obiect la altul cu tasta Tab,
se pot modifica proprietilor obiectelor grafice : numele obiectelor grafice,
fontul, culorile fondului i primplanului, poziia, se pot adaug elementele
dorite n caseta Listbox, sau opiuni n meniul Popup, etc.
Prelucrarea interfeei grafice se face cu opiunile meniurilor View, Tools i meniului
contextual al obiectului, artate n Tabelul 32. O parte din aceste opiuni pot fi
activate i cu butoane din bara de instrumente. Aceste opiuni sunt :
Align Objects i butonul afiaz caseta Align Objects ce permite alinierea
obiectelor,
Property Inspector i butonul afiaz caseta Property Inspector ce
permite modificarea proprietilor obiectelor,
Tab Order Editor permite alegerea secvenei de deplasare de la un obiect la
altul cu tasta Tab,
Grid and Rulers a meniului Tools modific opiunile relative la aria de
desenare (a fost prezentat mai nainte),
Object Browser i butonul afiaz un arbore cu obiectele interfeei.
86
a) meniul View b) meniul Tools c) meniu contextual
Tabelul 32. Meniurile View, Tools ale editorului Layout i meniul contextual al obiectului grafic.
12.1.3 Alinierea componentelor
Alinierea componentelor se face cu opiunea Align Objects a meniului Tools sau cu
butonul din bara de instrumente. Fie de exemplu interfaa din Figura 46, cu trei
butoane ce trebuie aliniate. La activarea opiunii Align objects se afiaz caseta de
dialog Align Objects din Figura 46. In caset se pot prescrie:
divese moduri de aliniere vertical i orizontal,
distana ntre obiecte n pixeli.
Dup alegerea modului de aliniere i a distanei ntre obiecte clic pe butonul Apply i
apoi pe butonul OK.
Figura 46. Interfaa grafic.
87
Rezultatul alinierii celor trei butoane din Figura 46 este artat n Figura 47.
Figura 47. Interfaa grafic din Figura 46 cu obiectele aliniate.
Putem ncadra diverse obiecte ale interfeei cu un contur reprezentat de obiectul
Frame. Acest lucru se face astfel:
1. se selecteaz obiectul Frame i se ncadreaz obiectele dorite cu un contur,
2. clic pe opiunea Send to Back a meniului contextual al elementului sau a
meniului Layout.
Aciunea Interfaa grafic
Obiectele ce vor fi ncadrate cu un contur
Se selecteaz obiectul Frame i se
ncadreaz cele dou obiectele Edit Text
cu un contur
Clic pe opiunea Send to Back a
meniului contextual al elementului sau a
meniului Layout
Tabelul 33. Incadrarea obiectelor grafice cu un contur.
Tabelul 33 prezint un exemplu de ncadrare a obiectelor grafice cu un contur.
12.1.4 Modificarea proprietilor obiectelor grafice
Modificarea proprietilor obiectelor grafice se face cu Inspectorul de proprieti.
Caseta de dialog a Inspectorului de proprieti se afiaz selectnd opiunea Property
88
Inspector a meniului View sau a meniului contextual al obiectului, sau cu clic pe
butonul al barei de instrumente. Proprietile obiectelor grafice sunt artate n
Tabelul 34.
Pentru modificarea proprietilor un obiect grafic se selecteaz obiectul cu un clic cu
butonul stng i n Tabelul 34 se modific proprietile dorite.
Proprietile obiectelor sunt utilizate de aplicaia GIUDE la desenarea lor pe ecran.
O proprietate comun tuturor obiectelor este Position detaliat n Figura 48. Aceast
proprietate este vectorul [x y width height] ce conine coordonatele punctului stnga
jos al obiectului i limea i nlimea obiectului n raport cu co;ul stnga jos al
ferestrei interfeei. Modificnd aceast proprietate se pot modifica dimensiunile i
poziia obiectelor n interfat.
Figura 48. Proprietatea Position.
89
Tabelul 34. Proprietile obiectelor grafice.
O proprietate comun tuturor obiectelor este String. In cazul obiectelor tip buton sau
text static, valoarea proprietii este chiar numele obiectului. In cazul unui obiect
Popup Menu sau Listbox, valoarea proprietii const n irurile de caractere cu
opiunile meniului, respectiv opiunile casetei Listbox. In cazul unei casete de text,
EditText, este chiar textul din caset. Modificarea acestei proprieti se face astfel:
1. se afiaz caseta Inspectorului de proprieti,
2. se selecteaz obiectul n interfaa grafic,
3. se selecteaz proprietatea String cu un clic ; ea apare ca n Figura 49 sau n
Figura 50,
4. proprietatea String se poate modifica n dou moduri :
a. se introduce n partea dreapt irul de caractere dorit,
b. clic pe butonul care afiaz caseta de dialog String din Figura 51 n
care se introduce irurile de caractere dorite.
Pentru a modifica numele butonului Push Button din interfaa din Figura 45 vom
selecta proprietatea String cu un clic i vom introduce n partea dreapt irul de
caractere dorit. Procedura este urmtoarea :
1. se selecteaz butonul Push Button n interfaa grafic,
2. se selecteaz proprietatea String n caseta Inspectorului de Proprieti ca n
Figura 49,
90
3. n partea dreapt se nlocuiete numele implicit Push Button al butonului cu
numele dorit.
Figura 49. Modificarea numelui unui buton.
In interfaa din Figura 45 s-au modificat numele butoanelor i textul static i s-a ters
textul din caseta Edit Text..
Adugarea de opiuni la un obiect de tip Popup Menu se face astfel :
1. se selecteaz obiectul Popup Menu din interfaa grafic,
2. se selecteaz proprietatea String n caseta Inspectorului de Proprieti ca n
Figura 50,
3. clic pe butonul care afiaz caseta de dialog String din Figura 51 n care se
introduce textul opiunilor dorite; dup nserarea textului unei opiuni clic pe
butonul Return,
4. dup introducerea tuturor opiunilor clic pe butonul OK al casetei de dialog.
Figura 50. Adugarea de opiuni unui meniu.
Figura 51. Caseta de dialog String a obiectelor grafice.
In acelai mod s-au introdus irurile n caseta Listbox. Rezultatul este cel din Figura
52.
91

Figura 52. Interfaa grafic din Figura 45 cu numele obiectelor modificate.
Caseta cu obiectele interfeei grafice inspectate cu opiunea Object Browser este cea
din Figura 53. Caseta prezint arborele obiectelor interfeei grafice. Acest arbore are
ca rdcin un obiect tip figure.
Figura 53. Obiectele interfeei din Figura 52.
Menionm dou proprieti importante pentru toate obiectele grafice :
proprietarea Style conine un ir de caractere cu tipul obiectului,
proprietatea Tag conine numele obiectului, generat de aplicaia GUIDE i
utilizat n numele funciilor generate de aplicaia GUIDE n fiierul cu funcii
Matlab.
92
Tipurile posibile ale obiectelor nterfeelor grafice sunt cele din Figura 54.
Figura 54. Tipurile obiectelor grafice.
Numele generate pentru obiectele grafice au forma text1, text2, pushbutton1, etc. Ele
sunt formate din tipul elementului i numrul obiectului de tipul respectiv din
interfa, n ordinea n care a fost adugat.
Interfaa grafic poate fi salvat n dou moduri:
cu un clic pe opiunea Save As al meniului File,
cu un clic pe opiunea Run a meniului Tools sau pe butonul al barei de
instrumente.
Aplicaia GUIDE creaz :
o figur (un fiier cu extensia .fig),
un fiier cu instruciuni ce realizeaz funciile obiectelor interfeei (cu
extensia .m). Acest fiier trebuie completat cu instruciunile corespunztoare
pentru ca obiectele interfeei s realizeze funciile dorite.
Interfaa construit este lansat n execuie n dou moduri:
cu un clic pe fiierul guidex2.fig i arat ca n Figura 55,
de la linia de comand, guidex2. In acest mod n linia de comand pot exista i
parametri.
93
Figura 55. Interfaa grafic din Figura 52.
12.2 Programarea interfeei grafice
La salvarea interfeei grafice create, aplicaia GUIDE genereaz un fiier ce trebuie
completat cu instruciuni corespunztoare aciunilor ce trebuie executate de obiectele
interfeei. Acest fiier este afiat cu clic pe opiunea M-file Editor a meniului View
sau a meniului contextual afiat la un clic cu butonul drept pe un obiect al interfeei,
sau cu un clic pe butonul al barei de instrumente.
12.2.1 Organizarea interfeei grafice
Interfaa grafic este o aplicaie dirijat de evenimente. Evenimentele ce apar sunt :
un clic pe obiectul grafic, buton, meniu, caset Listbox, etc.,
deplasarea cursorului unui obiect Slider cu mousul,
apsarea tastei Enter n cazul unui obiect tip Text.
Sistemul de operare creaz o coad cu mesaje, n ordinea n care apar evenimentele.
Fiecare mesaj conine codul unui eveniment i momentul lui de apariie. Sistemul de
operare ia cte un mesaj din coad i apeleaz o funcie specific obiectului ce a
generat mesajul. Aceste funcii se numesc callback. Aplicaia GUIDE genereaz un
fiier cu funcii callback, cte una pentru fiecare obiect al interfeei, care trebuie
completate de programator. In afar de funciile callback ce trateaz evenimentele ce
apar, aplicaia GUIDE mai genereaz :
funcii pentru iniializarea aplicaiei,
funcii pentru iniializarea unor obiecte ale interfeei.
94
Aceste funcii sunt apelate o singur dat de sistemul de operare, la lansarea n
execuie a interfeei. Vom prezenta n continuare toate aceste funcii.
Exemplu. Fie interfaa grafic din Figura 56, cu numele test, care cuprinde dou
casete de text i un buton. In caseta de text din stnga se introduce un numr. La
apsarea butonului, n caseta din dreapta apare numrul nmulit cu doi.
Figura 56. Proiectarea unei interfee grafice.
Obiectele grafice ale interfeei sunt artate n Figura 57.
Figura 57. Obiectele interfeei grafice din Figura 56.
La execuie interfaa apare ca n Figura 58.
95
Figura 58. Interfa grafic.
Aplicaia GUIDE creaz un fiier cu numele test.fig i unul cu numele fiier test.m.
Funciile generate n fiierul test.m sunt urmtoarele.
Se genereaz o funcie test cu prototipul
function varargout = test(varargin)
care iniializeaz aplicaia. Parametrul de intrare varargin conine o list cu
argumentele liniei de comand. Reamintim c interfaa creat poate fi lansat n
execuie n dou feluri :
cu un clic pe fiierul test.fig,
de la linia de comand, cu numele interfeei, test, caz n care linia de comand
poate avea i parametri, iruri de caractere dup numele interfeei. Aceti
parametrii, dac exist, sunt pasai interfeei n vectorul varargin.
Codul funciei test este urmtorul.
function varargout = test(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @test_OpeningFcn, ...
'gui_OutputFcn', @test_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
96
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
Urmtoarea funcie se numete test_OpeningFcn i este apelat de sistemul de operare
nainte ca interfaa s devin vizibil. Parametrii funciei test_OpeningFcn sunt
urmtorii:
hObject variabil handle corespunztoare obiectului figure,
handles structur cu variabile handle ale obiectelor interfeei i date
utilizator,
varargin lista cu argumentele liniei de comand.
Funcia generat de aplicaia GUIDE este urmtoarea:
function test_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to test (see VARARGIN)
% Choose default command line output for test
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
Datele aplicaiei sunt memorate ntr-o structur numit handles care conine
variabilele handle ale tuturor obiectelor interfeei i date utilizator. Structura handles
este pasat ca parametru de intrare tuturor funciilor callback ale aplicaiei. In acest
fel, toate funciile callback pot utiliza valorile proprietilor obiectelor grafice i datele
aplicaiei. Utilizatorul poate nscrie n structura handles datele dorite ce vor fi
accesibile tuturor funciilor callback.
Instruciunea
handles.output = hObject;
adaug un nou element, output, la structura handles i i atribuie ca valoare parametrul
de intrare hObject care este variabile handle a figurii. Acest handle este utilizat de
funcia urmtoare, test_OutputFcn.
Funcia guidata memoreaz sau regsete datele aplicaiei n structura handles.
Funcia
guidata(h, data)
memoreaz structuraa data. Parametrii funciei sunt:
h variabil handle a figurii sau a unui obiect al interfeei,
data structura pe care aplicaia vrea s o memoreze.
97
In cazul nostru, structura ce va fi memorat este totdeauna structura handles.
Funcia
data = guidata(h)
furnizeaz structura memorat anterior.
In funcia test_OpeningFcn am modificat structura handles (am adugat elementul
output), i o memorm cu instruciunea
guidata(hObject, handles);
Urmtoarea funcie se numete test_OutputFcn.
function varargout = test_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
Parametrii de intrare ai funciei sunt cei ai funciei anterioare. Funcia furnizeaz
valorile de ieire ale aplicaiei. varargout este un vector de celule ce poate conine
oricte valori. Implicit, funcia atribuie primului component al structurii varargout
elementul handles.output
varargout{1} = handles.output;
Acest element conine ca valoarea variabila handle al figurii, atribuit n funcia
anterioar, test_OpeningFcn.
Structura handles n cazul interfeei proiectate este prezentat n Figura 59. Ea conine
variabile handle pentru figur i toate obiectele interfeei. Numele acestor variabile
este valoarea proprietii Tag a obiectelor.
Figura 59. Variabila handles a interfeei.
Aplicaia GUIDE genereaz n general dou funcii pentru fiecare obiect al interfeei:
o funcie pentru iniializarea obiectului, apelat o singur dat de sistemul de
operare la crearea obiectului,
o funcie callback, apelat de sistemul de operare la fiecare selectare a
obiectului, pentru tratarea evenimentelor corespunztoare obiectului.
Vom prezenta n continuare aceste funcii. Obiectele interfeei noastre au numele
edit1, edit2 i respective pushbutton1 (proprietatea Tag a obiectelor), i sunt utilizate
de aplicaia GUIDE la crearea numelor funciilor asociate obiectelor.
98
Urmtoarea funcie, specific obiectelor tip EditText, este apelat o singur dat la
crearea obiectului. Ea poate fi utilizat pentru a prescrie proprietile obiectului:
culoarea fondului, etc. Parametrii funciei sunt :
hObject variabila handle a obiectului edit1,
handles - structur cu variabile handle ale obiectelor interfeei i date
utilizator. Ea este creat dup ce toate funciile CreateFcn asociate obiectelor
interfeei au fost apelate.
Funcia este urmtoarea.
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
O funcie identic este generat pentru obiectul EditText edit2.
Urmtoarele funcii sunt funciile callback pentru fiecare obiect al interfeei generate
de aplicaia GUIDE.
Funcia edit1_Callback este funcia callback pentru obiectul EditText edit1. Ea este
apelat ori de cte ori obiectul edit1 este selectat. Parametrii funciei sunt:
hObject variabila handle a obiectului edit1,
handles - structur cu variabile handle ale obiectelor interfeei i date utilizator
Funcia este prezentat n continuare:
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
Pentru a obine textul din caseta de text (valoarea proprietii String) se utilizeaz
funcia
get(hObject,'String')
O funcie identic este generat pentru cellalt obiect EditText, edit2.
Funcia pushbutton1_Callback este funcia callback pentru obiectul tip PushButton
pushbutton1. Ea este apelat ori de cte ori apare un eveniment pentru acest obiect
(clic pe buton). Parametrii funciei sunt:
hObject variabila handle a obiectului pushbutton1,
99
handles - structur cu variabile handle ale obiectelor interfeei i date
utilizator.
Funcia este urmtoarea.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
12.2.2 Programarea interfeei grafice
Funciile interfeei pot fi modificate cu editorul de fiiere Matlab (M-file Editor) care
se lanseaz cu un clic pe opiunea M-file Editor a meniului View sau a meniului
contextual afiat la un clic cu butonul drept pe un obiect al interfeei, sau cu un clic pe
butonul al barei de instrumente. Fereastra acestui editor este artat n Figura 60.
Figura 60. Fereastra editorului de fiiere Matlab.
La un clic pe butonul se afiaz meniul din Figura 61. Un clic pe o funcie
plaseaz cursorul la nceputul acestei funcii n fiier.
100
Figura 61. Meniu cu funciile interfeei grafice.
Vom modifica acum funciile callback ale interfeei grafice. Operaiile pe care trebuie
s le execute interfaa grafic sunt:
s citeasc numrul introdus n caseta de text edit1,
s nmuleasc acest numr cu 2,
s afieze rezultatul n caseta de text edit2.
Funcia edit1_Callback va fi modificat astfel nct s citeasc numrul introdus n
caseta de text i s-l memoreze ca valoare a proprietii String a obiectului. Funcia
modificat este artat mai jos.
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
input = str2num(get(hObject, 'String'));
if(isempty(input))
set(hObject, 'String', 0);
end
guidata(hObject, handles);
Funcia
get(hObject,'String')
d coninutul casetei de text ca ir de caractere. Funcia str2num convertete irul de
caractere n numr. Dac irul de caractere a fost vid atunci n caseta de text se nscrie
caracterul 0 cu funcia
set(hObject, 'String', 0)
In final, funcia
guidata(hObject, handles)
memoreaz valorile proprietilor obiectului n structura handles.
Funcia pushbutton1_Callback va fi modificat nct s citesc proprietatea String a
obiectului edit1, care este numrul introdus n caseta de text edit1, s nmuleasc cu 2
acest numr i s-l nscrie n caseta de text edit2. Funcia modificat este cea de mai
jos.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
101
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
a = get(handles.edit1, 'String');
rez = str2num(a) * 2;
c = num2str(rez);
set(handles.edit2, 'String', c);
guidata(hObject, handles);
Instruciunea
a = get(handles.edit1, 'String');
regsete valoarea proprietii String a obiectului edit1. Instruciunea
rez = str2num(a) * 2;
convertete acest ir n numr i l nmulete cu 2. Instruciunea
c = num2str(rez);
convertetye rezultatul n ir de caractere, iar instruciunea
set(handles.edit2, 'String', c) ;
memoreaz acest ir ca valoare a proprietii String a casetei de text edit2. Sirul va fi
afiat n caseta de text.
In final funcia
guidata(hObject, handles);
memoreaz valorile proprietilor obiectelor n structura handles.
12.2.3 Adugarea unor grafice la interfa
Vom crea o interfa cu un grafic al funciei sin(t) pe intervalul [0, 2]. Interfaa este
cea din Figura 62. Numele ei va fi testfigure.
102
Figura 62. Interfa grafic.
Aplicaia GUIDE genereaz un program dup cum s-a artat anterior. Vom repeta
aici definiia funciei testfigure_OutputFcn n care vom introduce datele ce se vor
afia.
% --- Outputs from this function are returned to the command line.
function varargout = testfigure_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
Vom genera n aceast funcie datele ce se vor reprezenta grafic, vom crea obiectul
plot respectiv i vom memora acest obiect n structura handles, n cmpul
current_data, ca mai jos. Funcia modificat este urmtoarea.
% --- Outputs from this function are returned to the command line.
function varargout = testfigure_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
103
% handles structure with handles and user data (see GUIDATA)
t = 0:0.1:2*pi;
x = sin(t);
h = plot(t, x);
xlabel('t [s]');
ylabel('sin(t)');
grid
handles.current_data = h;
% Get default command line output from handles structure
varargout{1} = handles.output;
Interfaa este cea din Figura 63.
Figura 63. Interfaa grafic cu graficul funciei sin(t).
Vom crea o interfa cu dou butoane care s reprezinte funcia sin(t) sau cos(t) dup
cum apsm un buton sau altul. Interfaa este cea din Figura 64. Numele ei este
douagrafice.
Pentru nceput generm graficul funciei cos ntr-un obiect plot memorm acest obiect
n structura handles, n cmpul current_data, ca mai sus. Aceast funcie este afiat
iniial.
% --- Executes just before douagrafice is made visible.
function douagrafice_OpeningFcn(hObject, eventdata, handles,
varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
104
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to douagrafice (see VARARGIN)
t = 0:0.1:2*pi;
y = cos(t);
hs = plot(t, y);
xlabel('t [s]');
ylabel('cos(t)');
grid
handles.current_data = hs;
guidata(hObject, handles)
% Choose default command line output for douagrafice
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes douagrafice wait for user response (see UIRESUME)
% uiwait(handles.figure1);
Figura 64. Interfa grafic.
In funcia pushbutton1_Callback asociat primului buton generm graficul funciei sin
n obiectul plot, memorm variabila handle a acestui obiect n cmpul current_data
din structura handles i memorm aceast structur.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
t = 0:0.1:2*pi;
x = sin(t);
105
hs = plot(t, x);
xlabel('t [s]');
ylabel('sin(t)');
grid
handles.current_data = hs;
guidata(hObject, handles)
Funcia pushbutton2_Callback a celui de-al doilea buton este asemntoare.
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
t = 0:0.1:2*pi;
y = cos(t);
hs = plot(t, y);
xlabel('t [s]');
ylabel('cos(t)');
grid
handles.current_data = hs;
guidata(hObject, handles)
Vom crea acum o interfa cu dou obiecte grafice de tipul axes. Vom afia cte un
grafic n fiecare obiect axes la un clic pe un buton.
Funcia asociat butonului este artat mai jos.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
t = 0: 0.1: 2 * pi;
sx = sin(t);
cx = cos(t);
axes(handles.axes1)
plot(t, sx)
grid on
axes(handles.axes2)
plot(t, cx)
grid on
106
Figura 65. Afiarea a dou curbe.
Afiarea unei curbe ntr-un obiect tip axes se face ca mai jos. Se genereaz curba
t = 0: 0.1: 2 * pi;
sx = sin(t);
Se definete graficul ce va fi utilizat, aici obiectul axes1, i se afiaz curba cu
instruciunea plot()

axes(handles.axes1)
plot(t, sx)
grid on
Funcia axes(h) unde h este o variabil handle definete obiectul h ca axe curente.
Funcia plot urmtoare reprezint grafic o curb n aceste axe curente.
12.2.4 Modificarea proprietilor obiectelor grafice la rularea
programului
Vom construi o interfa grafic cu dou butoane, Button1 i Button2, i o caset de
text. Butonul 2 este iniial dazactivat. Un clic pe butonul 1 activeaz butonul 2. Un
clic pe butonul 2 afiaz un mesaj n caseta de text.
Interfaa grafic este cea din Figura 66. Ea are numele buttons i se proiecteaz ca n
exemplele anterioare.
107
Figura 66. Proiectarea interfeei grafice.
Pentru a crea butonul 2 dezactivat, proprietatea Enable a butonului se pune la
valoarea off, vezi Figura 67.
108
Figura 67. Caseta cu proprieti a butonului 2.
Fiierul generat de aplicaie este cel de mai jos.
function varargout = buttons(varargin)
% BUTTONS M-file for buttons.fig
% BUTTONS, by itself, creates a new BUTTONS or raises the existing
% singleton*.
%
% H = BUTTONS returns the handle to a new BUTTONS or the handle to
% the existing singleton*.
%
% BUTTONS('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in BUTTONS.M with the given input arguments.
%
% BUTTONS('Property','Value',...) creates a new BUTTONS or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before buttons_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to buttons_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
109
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help buttons

% Last Modified by GUIDE v2.5 11-Aug-2010 22:50:48

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @buttons_OpeningFcn, ...
'gui_OutputFcn', @buttons_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before buttons is made visible.
function buttons_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to buttons (see VARARGIN)

% Choose default command line output for buttons
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes buttons wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = buttons_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
110
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.pushbutton2, 'enable', 'on')
guidata(hObject, handles);

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1, 'string', 'action')
guidata(hObject, handles);


function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
Funciile modificate sunt cele corespunztoare butoaneler. Funcia asociat butonului
1 este cea de mai jos.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
111
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.pushbutton2, 'enable', 'on')
guidata(hObject, handles);
In aceast funcie se activeaz butonul 2 cu instruciunea
set(handles.pushbutton2, 'enable', 'on')
care pune proprietatea enable a butonului 2 la valoarea on. Funcia
guidata(hObject, handles)
memoreaz valorile proprietilor obiectului n structura handles.
Funcia asociat butonului 2 scrie n caseta de text un mesaj.
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.edit1, 'string', 'action')
guidata(hObject, handles);
Funcia
set(handles.edit1, 'string', 'action')
memoreaz irul action n caseta de text. Se memoreaz apoi proprietile obiectului
n structura handles.
Interfaa grafic este cea din Figura 68.
112
Figura 68. Interfat grafic.
12.2.5 Poziionarea unui punct pe o curb
Vom construi o interfa grafic ce poate poziiona un punct pe un grafic cu dou
slidere. Interfaa va avea un grafic al unei funcii, dou slidere pentru axele x i y i
dou casete de text n care se vor afia poziiile cursoarelor celor dou slidere. Punctul
va fi marcat pe figur cu x.
Interfaa este cea din Figura 69. Ea are numele pointoncurve i se proiecteaz ca n
exemplele anterioare. In partea stng a ferestrei am afiat componentele n palet cu
nume. Pentru aceasta clic pe meniul File, opiunea Preferences, ce afiaz caseta
Preferences din Figura 40. In arborele din stnga clic pe nodul GUIDE i se
marcheaz opiunea Show names in component palette. Sliderul se deseneaz
orizontal sau vertical desennd corespunztor dreptunghiul ce l ncadreaz.
Vom afia graficul funciei sin(t) pe intervalul [0, 1]. Intervalul de valori pentru
slidere va fi [0, 1].
113
Figura 69. Interfa grafic.
Programul interfeei grafice este urmtorul.
function varargout = pointoncurve(varargin)
% POINTONCURVE M-file for pointoncurve.fig
% POINTONCURVE, by itself, creates a new POINTONCURVE or raises the
existing
% singleton*.
%
% H = POINTONCURVE returns the handle to a new POINTONCURVE or the
handle to
% the existing singleton*.
%
% POINTONCURVE('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in POINTONCURVE.M with the given input
arguments.
%
% POINTONCURVE('Property','Value',...) creates a new POINTONCURVE or
raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before pointoncurve_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to pointoncurve_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
114
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help pointoncurve

% Last Modified by GUIDE v2.5 12-Aug-2010 14:23:03

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @pointoncurve_OpeningFcn, ...
'gui_OutputFcn', @pointoncurve_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before pointoncurve is made visible.
function pointoncurve_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to pointoncurve (see VARARGIN)

% Choose default command line output for pointoncurve
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes pointoncurve wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = pointoncurve_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
115
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;
t = 0:0.01:1;
x = sin(t);
h = plot(t, x);
xlabel('t [s]');
ylabel('sin(t)');
grid
handles.current_data = h;
ht = text('String', 'x', 'units', 'norm', 'pos', [0, 0]);
handles.texhan = ht;
guidata(hObject, handles);


% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
posx = get(hObject, 'Value');
set(handles.edit1, 'String', posx);
posy = get(handles.edit2, 'String');
% delete previous point
ht = handles.texhan;
delete(ht);
ht = text('String', 'x', 'units', 'norm', 'pos', [posx, str2num(posy)]);
handles.texhan = ht;
guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end


% --- Executes on slider movement.
function slider2_Callback(hObject, eventdata, handles)
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
116
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
posy = get(hObject, 'Value');
set(handles.edit2, 'String', posy);
posx = get(handles.edit1, 'String');
% delete previous point
ht = handles.texhan;
delete(ht);
ht = text('String', 'x', 'units', 'norm', 'pos', [str2num(posx), posy]);
handles.texhan = ht;
guidata(hObject, handles);

% --- Executes during object creation, after setting all properties.
function slider2_CreateFcn(hObject, eventdata, handles)
% hObject handle to slider2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9 .9 .9]);
end


function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end



117
function edit2_Callback(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
% str2double(get(hObject,'String')) returns contents of edit2 as a double


% --- Executes during object creation, after setting all properties.
function edit2_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
Graficul funciei sin(t) este generat n funcia pointoncurve_OutputFcn(), ca ntr-un
exemplu anterior.
% --- Outputs from this function are returned to the command line.
function varargout = pointoncurve_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;
t = 0:0.01:1;
x = sin(t);
h = plot(t, x);
xlabel('t [s]');
ylabel('sin(t)');
grid
handles.current_data = h;
ht = text('String', 'x', 'units', 'norm', 'pos', [0, 0]);
handles.texhan = ht;
guidata(hObject, handles);
Vom marca pe grafic punctul iniial (0, 0) cu x. Pentru aceasta vom afia pe grafic un
ir x cu funcia text n punctul (0, 0). Funcia text are ca rezultat un handle la obiectul
creat.
ht = text('String', 'x', 'units', 'norm', 'pos', [0, 0]);
118
Vom memora variabila handle asociat obiectului text creat n structura handles n
variabila handles.texhan.
handles.texhan = ht;
Memorm structura handles cu funcia
guidata(hObject, handles);
Marcarea punctelor pe grafic se face n funciile callback associate celor dou slidere.
Vom prezenta doar funcia slider1_Callback asociat primului slider.
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
posx = get(hObject, 'Value');
set(handles.edit1, 'String', posx);
posy = get(handles.edit2, 'String');
% delete previous point
ht = handles.texhan;
delete(ht);
ht = text('String', 'x', 'units', 'norm', 'pos', [posx, str2num(posy)]);
handles.texhan = ht;
guidata(hObject, handles);
Se citete poziia sliderului cu instruciunea
posx = get(hObject, 'Value');
i se nscrie valoarea n variabila handle a sliderului cu instruciunea
set(handles.edit1, 'String', posx);
Se citete valoarea poziiei celuilalt slider cu instruciunea
posy = get(handles.edit2, 'String');
Menionm c, valoarea este memorat ca ir de caractere.
Stergem punctul anterior. Citim n variabila ht variabila handle a obiectului text creat
anterior, memorat n handles.texhan i tergem obiectul cu instruciunea delete.
ht = handles.texhan;
delete(ht);
Afim pe grafic un character x n punctul cu coordonatele celor dou slidere.
ht = text('String', 'x', 'units', 'norm', 'pos', [posx, str2num(posy)]);
Memorm n structura handles n handles.texhan variabila handle ht a obiectului text
creat i memorm structura handles
handles.texhan = ht;
guidata(hObject, handles);
Interfaa cu punctul selectat pe grafic este cea din Figura 70.
119
Figura 70. Interfaa cu punctul selectat pe grafic.
12.2.6 Introducerea datelor cu casete de dialog
Casetele de dialog se pot utiliza pentru a introduce cantiti mici de date sau pentru a
afia mesaje. Vom exemplifica utilizarea unei casete de dialog la rezolvarea
urmtoarei probleme: calculul sumei, diferenei, produsului sau ctului a dou numere
introduse ntr-o caset de dialog mpreun cu operatorul dorit, +, -, * sau /.
Interfaa proiectat este cea din Figura 71. Obiectele grafice tip text au numele edit1,
edit2, edit3. Obiectul tip text static ce conine textul oper are numele text1. La un clic
pe butonul Calcul se va afia o caset de dialog n care vom introduce cele dou
numere i operatorul dorit. Numerele vor fi afiate apoi n cele dou casete text din
stnga, iar rezultatul n caseta din dreapta. Operatorul va fi afiat n obiectul tip text
static ce conine iniial irul oper.
Caseta de dialog va conine un numr de casete text n care se vor introduce datele
dorite. Caseta de dialog se creaz cu funcia inputdlg cu formele:
answer=inputdlg(prompt,dlg_title)
answer=inputdlg(prompt,dlg_title,num_lines)
answer=inputdlg(prompt,dlg_title,num_lines,defAns)
answer = inputdlg(prompt,dlg_title,num_lines,defAns,options)
unde:
prompt structur cu mesajele afiate deasupra casetelor text,
dlg_title ir de caractere cu numele casetei de dialog,
num_lines numrul de linii (casete de text) n care se vor introduce date,
defAns valorile implicite ale datelor din casetele text,
120
options structur cu opiuni pentru caseta de dialog.
answer structur cu datele introduse.
Figura 71. Interfat grafic.
Aplicaia GUIDE genereaz un fiier cu funcii asociate obiectelor grafice dup cum
s-a artat mai nainte. Funcia asociat butonului, completat cu afiarea casetei de
dialog i calculele necesare este cea de mai jos.
% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
prompt = {'Primul numar', 'Operator', 'Al doilea numar'};
titlu = 'Operatii cu numere';
answer = inputdlg(prompt, titlu);
set(handles.edit1, 'string', answer{1});
set(handles.edit2, 'string', answer{3});
a = str2num(answer{1});
b = str2num(answer{3});
oper = answer{2};
if oper == '+'
c = a + b;
elseif oper == '-'
c = a - b;
elseif oper == '*'
121
c = b * a;
elseif oper == '/'
c = a / b
else
c = NaN;
end
d = num2str(c);
set(handles.edit3, 'string', d);
set(handles.text1, 'string', oper);
guidata(hObject, handles);
Pentru nceput definim parametrii casetei de dialog. Structura prompt va conine
mesajele afiate deasupra casetelor text, 'Primul numar', 'Operator' i 'Al doilea numar'
prompt = {'Primul numar', 'Operator', 'Al doilea numar'};
Definim irul titlu cu numele casetei
titlu = 'Operatii cu numere';
Caseta de dialog se afiaz cu instruciunea
answer = inputdlg(prompt, titlu);
La un clic pe buton se afiaz caseta din Figura 72.
Figura 72. Caseta de dialog cu numerele introduse.
Sirurile de caractere introduse sunt memorate n structura answer.
Memorm irurile ce corespund celor dou numere n casete text ale interfeei, edit1 i
edit2
set(handles.edit1, 'string', answer{1});
set(handles.edit2, 'string', answer{3});
Convertim irurile de caractere n numere n variabilele a i b
a = str2num(answer{1});
b = str2num(answer{3});
Memorm irul ce conine operatorul n variabila oper
oper = answer{2};
Efectum calculele corespunztoare cu rezultatul n variabila c. Convertim variabila c
n ir de caractere i memorm acest ir n caseta de text edit3.
d = num2str(c);
set(handles.edit3, 'string', d);
Memorm irul oper ca proprietate 'String' a obiectului text static text1.
set(handles.text1, 'string', oper);
Memorm structura handles
122
guidata(hObject, handles);
Interfaa cu rezultatele afiate este cea din Figura 73.
Figura 73. Interfaa grafic cu rezultatele calculului.
Putem afia casete de dialog cu mesaje diferite. Aceste casete se creaz cu
instruciunea msgbox cu formele:
h = msgbox(Message)
h = msgbox(Message,Title)
Parametrii funciei sunt:
Message ir de caractere cu mesajul afiat,
Title ir de caractere cu titlul casetei
123
13 Calcul simbolic
13.1 Definirea variabilelor i funciilor simbolice
Calculul simbolic opereaz cu obiecte simbolice: variabile, matrice i expresii
simbolice. Variabilele simbolice se definesc n dou feluri:
cu instruciunea syms, care definete variabile simbolice,
orice variabil ce primete ca valoare o expresie simbolic devine o variabil
simbolic; atribuirea de valori unei variabile se face cu operatorul =.
Instruciunea syms are forma
syms var var var .
unde var sunt nume de variabile simbolice.
Exemplu. Definim variabilele simbolice a, b i c cu instruciunea syms i atribuim
variabilei a ca valoare expresia simbolic b + c.
syms a b c
a = b + c
a =
b+c
Fie instruciunea
m = b +c
m este acum o variabil simbolic, deoarece a primit ca valoare o expresie simbolic.
Expresiile simbolice se definesc la fel ca expresiile aritmetice din Matlab, n care
variabilele numerice sunt nlocuite cu variabile simbolice. Se includ aici i vectorii i
matricele cu elemente expresii simbolice, asupra crora se pot efectua calcule
simbolice analoge calculelor numerice din Matlab.
Expresiile simbolice au ca termeni variabile simbolice i funcii simbolice i ca
operatori aritmetici:
+, -, *, /, \, ^
Operatori, +, -, *, /, sunt cei patru operatori aritmetici cunoscui. Operaia a \ b se
definete ca
b
a
*
1
Operatorul ^ este ridicarea la putere. Expresia a^ b este
b
a
Prioritile operatorilor aritmetici sunt cele cunoscute. Operatorii + i unari au cea
mai mare prioritate, urmai de operatorii *, /, \, ^, iar operatorii + i binari au cea
mai mic prioritate. Operatorii unari sunt asociativi la dreapta, operatorii binari sunt
asociativi este la stnga. In cadrul expresiilor aritmetice se pot utiliza paranteze
rotunde, ( i ), pentru a modifica prioritile operatorilor.
Funciile matematice uzuale ce se pot utiliza n expresiile simbolice sunt cele de mai
jos :
sin asin sqrt exp
cos acos abs log
tan atan log10
124
Exist nc un mod de a crea expresii simbolice, funcia sym. Aceast funcie are
forma
sym(' expresie simbolica')
i are ca rezultat o expresie simbolic ce poate fi atribuit unei variabile simbolice.
Reamintim c o expresie simbolic are ca termeni variabile simbolice, definite
anterior.
Exemple. S definim funcia simbolic liniar f(x) = a * x + b. Primul mod de a defini
funcia este de a defini variabilele simbolice a, x, b i f cu instruciunea syms i apoi
atribuim lui f ca valoare expresia simbolic:
syms a x b f;
f = a * x + b;
Al doilea mod definete expresia simbolic cu funcia sym:
syms a x b f;
f = sym (a * x + b);
In unele cazuri trebuie s crem expresii simbolice n care intervin constante. Acest
lucru se face cu funcia sym. De exemplu, pentru a crea o funcie simbolic constant
ce are valoarea 3 vom scrie
f = sym(3)
sau
f = sym(3)
Reamintim c instruciunea
f = 3
creaz o variabil numeric ce are valoarea 3.
Exemplu. Vom defini variabilele simbolice a, b i x i polinoamele simbolice f(x) =
a*x
2
+ 2 i g(x) = x + b i vom calcula produsul lor, f(x) * g(x). Programul este
urmtorul
syms a b x f g;
f = a *x^2+2
g = x + b
f * g
f =
a*x^2+2

g =
x+b

ans =
(a*x^2+2)*(x+b)
125
Exemplu. S definim variabila simbolic x i funcia simbolic 1 ) (
2
+ + x x x g .
symb x g;
g = sqrt(x^2 +x +1)
13.2 Substituii
Este posibil s atribuim valori numerice variabilelor simbolice i, n acest caz,
expresiile simbolice sunt evaluate la valoarea numeric corespunztoare. Aceste
substituii ale variabilelor simbolice cu valori numerice se fac cu funcia subs cu
formele
subs(expresie simbolic, variabil simbolic, valoare numeric)
n cazul cnd substituim o singur variabil, i
subs(expresie simbolica, {variabile simbolice}, {valori numerice})
n cazul cnd substituim mai multe variabile.
Exemplu. Fie funcia simbolic f(x) = x
2
- 3*x + 2. Vom substitui variabila simbolic
x cu valoarea 2.
syms f x;
f = x^2 3 * x + 2;
subs(f, x, 2)
ans =
0
Vom substitui acum variabila simbolic x cu valoarea -2
subs(f, x, -2)
ans =
12
Exemplu. Fie funcia de dou variabile f(x, y) = x
2
+ x*y
2
. Vom substitui mai nti
variabila simbolic x cu 2.
syms x y f;
f = x^2 + x * y;

subs(f, x, 2)

ans =
4+2*y
Vom substitui acum pe y cu 3.
subs(f, y, 3)

ans =
x^2+3*x
126
Vom substitui acum pe x cu -1 i pe y cu 2.
subs(f, {x, y}, {-1, 2})
ans =
-1
Reamintim c, lista cu variabilele simbolice ce vor fi substituite i lista cu valori sunt
ncluse ntre acolade, { }.
In cazul cnd substituim o singur variabil simbolic cu o valoare, funcia subs are i
urmtoarea form simpl
subs(expresie simbolic, valoare numeric)
Dac expresia simbolic depinde de mai mult de o variabil i variabila pentru care se
face substituia nu este specificat, substituia se face pentru variabila simbolic
implicit, care se alege dup urmtoarea regul: se alege litera cea mai apropiat de x
din alfabet; dac exist dou litere egal deprtate de x, se alege ultima din alfabet din
cele dou.
Exemplu. Fie expresia simbolic
syms x t;
f = t^2 * cos(x + t)
f =
t^2*cos(x+t)

subs(f, 2)
ans =
t^2*cos(2+t)
Dup cum se observ, se substituie variabila simbolic x cu valoarea 2, aleas dup
regula de mai sus.
Variabilele simbolice dintr-o expresie se pot determina cu funcia findsym.
Exemplu. Fie variabilele i expresiile simbolice:
syms t omega psi f x g;
f = cos(omega * t + psi);
g = x^3 x +1
findsym(f)
ans =
omega, psi, t
findsym(g)
ans =
x
Variabila simbolic implicit dintr-o expresie f se poate determina cu funcia
findsym(f, 1)
127
Exemplu. Fie expresia simbolic
syms x t;
f = t^2 * cos(x + t)
f =
t^2*cos(x+t)
findsym(f, 1)
ans =
x
Menionm c pentru afiarea expresiilor simbolice ntr-un format apropiat de cel din
matematic se utilizeaz funcia pretty ce are ca parametru expresia simbolic.
13.3 Reprezentarea simbolic a numerelor
Numerele se reprezint simbolic n urmtoarele feluri:
n virgul mobil, sub forma unei mantise nmulit cu 2 la un anumit
exponent; mantisa conine 13 cifre hexazecimale,
ca numr raional, ca raport a dou numere ntregi,
ca numr raional plus precizia relativ; precizia relativ este diferena ntre
valoarea numrului raional i valoarea lui reprezentat n virgul mobil, i
este exprimat n funcie de eps, precizia reprezentrii numerelor n virgul
mobil,
ca numr zecimal cu un numr specificat de cifre semnificative; implicit,
numrul de cifre este 32, dar el poate fi specificat cu funcia digits dup cum
se arat mai jos.
Conversia ntre numr i reprezentarea sa simbolic se face cu funcia sym cu un
parametru ce specific tipul reprezentrii simbolice dup cum se arat n Tabelul 35.
In Tabelul 35, n expresia funciei sym, x este o variabil Matlab.
Reprezentarea simbolic Funcia sym()
n virgul mobil sym(x, f)
ca numr raional sym(x, r)
ca numr raional plus precizia relativ sym(x, e)
ca numr zecimal cu un numr specificat de
cifre semnificative
sym(x, d)
Tabelul 35. Reprezentarea simbolic a numerelor.
Operaiile cu numere raionale se fac dup regulile din aritmetic.
Exemplu. Fie expresia
sym(2)/sym(3) + sym(4)/sym(5)
ans =
22/15
Exemplu. Fie numrul 0.2, a crui valoare va fi convertit ntr-un numr symbolic n
formele de mai sus.
128
sym(0.2, f)
ans =
'1.999999999999a'*2^(-3)
sym(0.2, r)
ans =

1/5
sym(0.2, e)
ans =
1/5+eps/20
sym(0.2, d)
ans =
.20000000000000001110223024625157
digits(10)
sym(0.2, d)
ans =
.2000000000
13.4 Definirea de variabile simbolice reale i complexe
O variabil complex este o pereche ordonat de dou variabile reale. Fie x i y dou
variabile reale. O variabil complex este z = x + i * y, unde x este partea real, y este
partea imaginar a variabilei z, iar i = 1 . Pentru a defini o variabil complex
trebuie s definim mai nti dou variabile simbolice reale, corespunznd prii reale
i celei imaginare a variabilei complexe, apoi utilizm formula de mai sus n care
variabila i este predefinit. Pentru aceasta se utilizeaz instruciunea syms cu opiunea
real sau funcia sym cu aceeai opiune:
cu instruciunea syms
syms x y real
z = x + i * y
cu funcia sym
x = sym(x, real);
y = sym(y, real);
z = x + i * y
In expresiile cu numere complexe se pot utiliza funciile matematice standard: real,
imag, conj, abs, etc.
Exemplu. S definim o variabil simbolic complex i s calculm conjugata, partea
real i modulul.
syms x y;
z = x + i * y;
conj(z)
129
ans =
x-i*y
real(z)

ans =
x
abs(z)

ans =
(x^2+y^2)^(1/2)
Dac dorim s tergem proprietatea real a unei variabile declarat anterior cu
instruciunea syms sau funcia sym, utilizm instruciunea syms cu opiunea unreal.
Exemplu.
syms x real;
syms x unreal;
13.5 Matrice simbolice
Matricele simbolice au ca elemente obiecte simbolice, constante, variabile sau
expresii simbolice. Operaiile cu matrice se efectueaz cu operatorii +, -, *, /, \, ^,
.*, ./, .\ i .^. Semnificaia operatorilor +, -, * este cea de adunare, scdere i nmulire
a matricelor cu dimensiuni corespunztoare. Semnificaia celorlali operatori este cea
Tabelul 36.
Operator Exemplu Semnificaie
/ a/b a * inv(b)
\ a\b inv(a) * b
^ a^b
b
a
.* c=a.*b
ij ij ij
b a c *
./ c = a / b
ij ij ij
b a c /
.\ c = a.\b
ij ij ij
a b c *
.^ c = a ^ b
ij ij ij
b a c ^
Tabelul 36. Operaii cu matrice simbolice.
Elementele matricelor simbolice se adreseaz cu indici n acelai fel ca elementele
matricelor numerice. Putem defini matrice simbolice n dou feluri:
matrice cu elemente simbolice,
s convertim matrice numerice n matrice simbolice cu funcia sym.
Exemplu. S definim matricea cu elemente simbolice
1
]
1

d c
b a
syms a b c d;
M = [a b; c d]
M =
130
[ a, b]
[ c, d]
det(M)
ans =
a*d-b*c
inv(M)
ans =
[ d/(a*d-b*c), -b/(a*d-b*c)]
[ -c/(a*d-b*c), a/(a*d-b*c)]
R = M * inv(M)
R =
[ a*d/(a*d-b*c)-b*c/(a*d-b*c), 0]
[ 0, a*d/(a*d-b*c)-b*c/(a*d-b*c)]
R = inv(M) * M
R =
[ a*d/(a*d-b*c)-b*c/(a*d-b*c), 0]
[ 0, a*d/(a*d-b*c)-b*c/(a*d-b*c)]
Pentru a afia expresia R n form matematic utilizm funcia pretty.
pretty(R)

[ a d b c ]
[--------- - --------- 0 ]
[a d - b c a d - b c ]
[ ]
[ a d b c ]
[ 0 --------- - ---------]
[ a d - b c a d - b c]
Putem simplifica expresiile de mai sus cu funcia simplify i obinem matricea unitate.
simplify(M*inv(M))
ans =

[ 1, 0]
[ 0, 1]
131
Exemplu. S definim matricele simbolice
1
]
1

c b
a 0
i
1
]
1

d c
b a
i calculm suma i
produsul lor.
.
syms a b c d;
A = [a 0; b c]
A =
[ a, 0]
[ b, c]
B = [-a b; -c d]
B =

[ -a, b]
[ -c, d]
R = A+B
R =

[ 0, b]
[ b-c, c+d]
R = A*B
R =

[ -a^2, a*b]
[ -a*b-c^2, b^2+c*d]
Pentru a scrie expresia simbolic R n form matematic, utilizm funcia pretty
pretty(R)

[ 2 ]
[ -a a b ]
[ ]
[ 2 2 ]
[-a b - c b + c d]
Exemplu. S definim matricea simbolic cu elemente complexe
1
]
1


+
b i a c
c b i a
*
*
.
syms a b c real;
A = [a+i*b c; -c a-i*b]
A =

[ a+i*b, c]
132
[ -c, a-i*b]
det(A)
ans =

a^2+b^2+c^2
conj(A)
ans =

[ a-i*b, c]
[ -c, a+i*b]
Exemplu. Fie H matricea Hilbert de dimensiune patru. S convertim aceast matrice
ntr-o matrice simbolic. Calculele cu numere simbolice raionale se fac cu precizie
infinit.
H = hilb(4)
H = sym(H)
det(H)
inv(H)
13.6 Crearea de funcii abstracte
In multe cazuri este avantajos s crem o funcie nedeterminat (abstract) care
acioneaz asupra obiectelor simbolice i apoi poate fi utilizat n expresii. Acest
lucru se face cu instruciunea
f = sym(f(x))
Variabila simbolic f poate fi utilizat apoi n expresii simbolice. De exemplu, pentru
a crea expresia simbolic
h
x f h x f ) ( ) ( +
vom scrie
df = (sub(f, x, x+h) f)/h
13.7 Reprezentarea grafic a funciilor
Reprezentarea grafic a funciilor se face cu funcia ezplot.
Reprezentarea grafic a unei funcii de o variabil, f(x), se face cu funcia
ezplot(f, [min, max])
unde min i max sunt limitele domeniului. Dac limitele sunt omise, domeniul de
reprezentare este -2< x < 2.
Exemplu. S reprezentm grafic funcia
1
) (
3

x
x
x f
syms f x;
f = x^3 / (x - 1);
133
ezplot(f)
grid
Reprezentarea grafic a funciei este cea din Figura 74.
Figura 74. Reprezentarea grafic a unei funcii.
Curbele plane definite parametric prin formulele simbolice x = x(t) i y = y(t) se
reprezint grafic cu funcia
ezplot(x, y, [tmin, tmax])
unde tmin, tmax sunt limitele domeniului de reprezentare. Dac limitele sunt omise,
domeniul de reprezentare este 0 < t < 2.
Exemplu. Reprezentarea grafic a curbei definit parametric prin ecuaiile:
x = 2 sin(2t)
y = 4cos(2t)
syms x y t;
x = 2 * sin(2 * t);
y = 4 * cos(2 * t);
ezplot(x, y);
grid
134
Figura 75. Graficul unei curbe definit parametric.
Curba este reprezentat n Figura 75. Variabila independent t ia valori n intervalul
0 < t < 2.
Curbele plane definite implicit de relaia f(x, y) = 0 se reprezint grafic cu funcia
ezplot(f, [xmin, xmax, ymin, ymax])
unde xmin, xmax, ymin, ymax sunt limitele domeniului de reprezentare. Funcia
ezplot(f, [min, max])
reprezint grafic funcia f(x, y) = 0 pe domeniul min < x < max, min < y < max. In
cazul n care domeniul nu este precizat, funcia
ezplot(f)
reprezint grafic funcia f(x, y) = 0 pe domeniul -2< x < 2, -2< y < 2.
Exemplu. S reprezentm grafic funcia x
4
+ y
3
x y =0. Programul este urmtorul
syms x y f;
f = x^4 + y^3 x y
ezplot(f)
grid
Funcia este reprezentat n Figura 76.
135
Figura 76. Reprezentarea unei curbei implicite.
Alte exemple de reprezentri grafice vor fi prezentate n paragrafele urmtoare.
136
14 Funcii pentru calcule simbolice
Funciile ce vor fi prezentate efectueaz urmtoarele categorii de calcule:
derivarea,
limite de funcii,
integrarea ,
calculul sumelor,
dezvoltarea n serie Taylor,
simplifcarea expresiilor i substituirea,
operaii cu polinoame,
algebra liniar,
rezolvarea ecuaiilor algebrice,
rezolvarea ecuaiilor difereniale ordinare.
14.1 Derivarea
Calculul derivatei simbolice se face cu funcia diff, care poate calcula derivatele
funciilor de una sau mai multe variabile, derivate de ordin 1 sau de ordin superior,
etc. Funcia are urmtoarele forme:
pentru a calcula derivata de ordin nti a unei funcii n raport cu variabila x
diff(f, x)
pentru a calcula derivata de ordin n a unei funcii n raport cu variabila x
diff(f, x, n)
pentru a calcula derivata unei funcii n raport cu variabila implicit
diff(f)
variabila implicit se alege dup regula enunat la funcia subs n paragraful
de mai sus referitor la substituii.
Exemple. Derivate de ordin nti.
syms x;
f = cos(2 * x);
diff(f)
ans =
-2*sin(2*x)
syms x y f;
f = x * cos(y) y * cos(x);
diff(f, x), diff(f, y)
ans =
cos(y)+y*sin(x)

ans =
-x*sin(y)-cos(x)
syms x f;
137
f = exp(i * x)
diff(f, x)
ans =

i*exp(i*x)
Derivata unei matrice simbolice este matricea obinut derivnd fiecare element.
Exemplu.
syms x y;
A = [ x^2 x*y; 2*x y^3]
A =

[ x^2, x*y]
[ 2*x, y^3]
diff(A)
ans =
[ 2*x, y]
[ 2, 0]
Calculul iacobianului,
) , , , (
) , , , (

z y x D
h g f D
, se face cu funcia jacobian cu forma
jacobian([f; g; h; ], [x, y, x, ])
Primul argument al funciei jacobian este un vector coloan cu funciile f, g, h, , al
doilea argument este un vector linie cu variabilele x, y, z,
Exemplu. Fie transformarea dat de funciile:
x = r * cos(t)
y = r* sin(t)
Determinantul funcional (iacobianul) transformrii se calculeaz astfel:
syms x y r t;
x = r * cos(t);
y = r * sin(t);
D = jacobian([x; y], [r, t])
D =
[ cos(t), -r*sin(t)]
[ sin(t), r*cos(t)]
Determinantul transformrii se calculeaz i se simplific astfel
det(D)
ans =
cos(t)^2*r+r*sin(t)^2

138
simplify(det(D))

ans =
r
14.2 Limite de funcii
14.2.1 Calculul limitelor de funcii
Fie de calculat limita
) (
lim
x f
a x

Calculul limitei funciei se face cu funcia limit cu forma
limit(f, x, a)
unde a este un numr, sau inf pentru (infinit).
Funcia limit are i forma
limit(f, a)
caz n care variabila dup care se calculeaz limita este variabila implicit care se
alege dup regula enunat la funcia subs n paragraful referitor la substituii
Exemplu. S calculm limita
2 2 3
1
2
2
lim
+ +
+

x x
x x
x
syms x f g;
f = x^2 x +1;
g = 3*x^2 + 2*x +2;
limit(f / g, x, inf)
ans =
1/3
Exemplu. S calculm limita
n
n
n

,
_

+

1
1
lim
Dup cum se tie, aceast limit este e.
syms g n;
limit((1 + 1 / n)^n, n, inf)
ans =
exp(1)
Exemplu. S calculm limita
( ) ( ) x
x
cos 1
lim
0
+

syms f x;
f = 1 + cos(x);
limit(f, x, 0)
139
ans =
2
Exemplu. S se calculeze limita
( ) ( )
h
x h x
h
sin sin
lim
0
+

syms g x h;
g = (sin(x+h)-sin(x))/h;
limit(g, h, 0)
ans =
cos(x)
Exerciii. S se calculeze limitele
1)
n
n
n
x

,
_

+

1
lim
2)
n
n
n
x

,
_


1
lim
14.2.2 Calculul limitelor laterale
Fie de calculat limitele laterale:
) (
lim
x f
a x
+

i
) (
lim
x f
a x

Ele se calculeaz cu funcia limit cu formele


limit(f, x, a, right)
pentru limita la dreapta, i
limit(f, x, a, left)
pentru limita la stnga.
Exemplu. S calculm limitele laterale ale funciei ( )
x
x
x f n punctul x = 0.
syms x f;
f = abs(x) / x;
limit(f, x, 0, right)
ans =
1
limit(f, x, 0, left)
ans =
-1
140
14.3 Integrarea
14.3.1 Calculul integralei nedefinite
Fie de calculate integrala nedefinit a funciei f(x)
( )

dx x f
Integrarea simbolic se efectueaz cu funcia int cu formele:
int(f, x)
n care specificm variabila de integrare, sau
int(f)
cnd variabila de integrare se alege dup regula enunat n paragraful referitor la
substitiii.
Exemplu. S calculm integrala funciei
f(x) = a * sin(x) + b * cos(x)
syms f a x b;
f = a * sin(x) + b * cos(x);
int(f, x)
ans =
-a*cos(x)+b*sin(x)
Exerciiu. S se calculeze primitivele funciilor din tabelul Tabelul 37.
x
n
x
x
1
+
( ) ( ) x x
2 2
cos sin
1
a
x
2 2
1
a x +
2 2
1
a x +
x
1
( ) x
2
cos
1
( ) x
2
sin
1
Tabelul 37. Funcii pentru care se vor calcula primitive.
14.3.2 Calculul integralei definite
Calculul integralei definite a funciei f(x)

b
a
dx x f ) (
se face cu funcia
int(f, x, a, b)
sau cu funcia
int(f, a, b)
In ultimul caz, variabila de integrare se alege dup regula specificat anterior.
Exemplu. S calculm integrala

+ +
3
1
3
) 2 ( dx x x
syms x f;
f = x^3 + x + 2;
int(f, 1, 3)
141
ans =
28
Exemplu. S calculm integrala

dx e
x
2
2
i s se reprezinte grafic funcia de sub integral.
syms f x;
f = exp(- x^2 / 2);
ezplot(f)
grid
int(f, x, -inf, inf)
ans =
2^(1/2)*pi^(1/2)
Reprezentarea grafic a funciei este cea din Figura 77.
Figura 77. Funcia erorilor.
142
14.3.3 Calculul integralelor ce depind de un parametru
Fie o funcie f(x) ce depinde de un parametru. Dac parametrul nu are o valoare
specificat, el este presupus un numr complex. In cazul cnd parametrul este un
numr real sau un numr pozitiv, el trebuie declarat ca atare n instruciunea syms.
Exemplu. Fie funcia
( )
2
ax
e x f

Vrem s calculm
( )


dx x f
Integrala este convergent n cazul n care parametrul a este pozitiv. Vom declara n
instruciunea syms c variabila a este pozitiv.
syms a positive;
syms x;
f = exp(-a * x^2)
R = int(f, x, -inf, inf)
R =
1/a^(1/2)*pi^(1/2)
pretty( R )

1/2
pi
-----
1/2
a~
In cazul n care parametrul a este complex vom scrie
syms a x;
f = exp(-a * x^2)
R = int(f, x, -inf, inf)
14.4 Calculul sumelor
Fie de efectuat calculul simbolic al sumei

n k
m k
k x ) (
Calculul simbolic al sumei se face cu instruciunea symsum cu formele
symsum(x, v, m, n)
sau
symsum(x, m, n)
unde x este termenul general al sumei, iar m i n sunt limitele inferioar i superioar,
care pot fi numere ntregi sau ,

simbolizat

prin

inf. In prima form variabila dup
care se face nsumarea este v, n a doua form se utilizeaz variabila simbolic
implicit, determinat de funcia findsym.
Exemplu. Fie de calculat suma
143

n
k
k
1

syms k n;
s = symsum(k, 1, n)
s =
1/2*(n+1)^2-1/2*n-1/2

pretty(s)
2
1/2 (n + 1) - 1/2 n 1 / 2
Exemplu. Fie de calculate sumele

n
k
k
1
1
,

1
1
k
k
,

1
2
1
k k
syms k n;
r = symsum(1 / k, 1, n)
r =
Psi(n+1)+eulergamma
r = symsum(1 / k, 1, inf)
r =
inf
r = symsum(1/k^2, 1, inf)

r =
1/6*pi^2
14.5 Dezvoltarea n serie Taylor
Fie o funcie f(x) care are derivate pn la ordinul n. Funcia
taylor(f, n, x, a)
d dezvoltarea n serie Taylor a funciei f(x) pn la ordinul n 1 n jurul punctului a.
( )
( )
( )

1
0
!
n
k
k
k
k
a f
a x
Dac argumentul a lipsete, funcia
taylor(f, n, x)
d dezvoltarea n serie MacLaurin a funciei a funciei f(x) pn la ordinul n 1
(dezvoltarea n serie n jurul punctului a = 0). Dac argumentul x lipsete, variabila
independent este determinat de funcia fyndsym. Dac argumentul n lipsete n = 6.
Exemplu. S calculm dezvoltarea n serie Taylor a funciei sin(x) n jurul originii.
syms x f;
f = sin(x);
taylor(f, 5)
144
ans =
x-1/6*x^3
Exemplu. S calculm dezvoltarea n serie Taylor a funciei e
x
n jurul originii.
syms f x;
f = exp(x);
T = taylor(f, 5, 0)

T =
1+x+1/2*x^2+1/6*x^3+1/24*x^4
pretty(T)

2 3 4
1 + x + 1/2 x + 1/6 x + 1/24 x
Exemplu. S calculm dezvoltarea n serie Taylor a funciei e
x
n jurul punctului x =1.
syms x f;
f = exp(x);
T = taylor(f, 3, 1)

T =
exp(1)+exp(1)*(x-1)+1/2*exp(1)*(x-1)^2
pretty(T)
2
exp(1) + exp(1) (x - 1) + 1/2 exp(1) (x - 1)
14.6 Simplificri i substituii
Funciile de mai jos aplic diverse identiti asupra expresiilor simbolice.
Funcia expand cu forma
expand(f)
aplic identitile din Tabelul 38 asupra polinoamelor, funciilor exponeniale i
logaritmice, funciilor trigonometrice directe i inverse.
f expand(f)
a*(x + y) a * x + a * y
a*(x -y) a * x a * y
a^(x+y) a^x*a^y
a^(x-y) a^x/a^y
exp(a + b) exp(a) * exp(b)
exp(a-b) exp(a)/exp(b)
log(x*y) log(x) + log(y)
log(x/y) log(x) log(y)
log(a^y) y*log(a)
sin(a + b) sin(a)*cos(b)+cos(a)*sin(b)
sin(2 * asin(a)) 2*a*(1-a^2)^(1/2)
145
Tabelul 38. Expandarea expresiilor simbolice.
la expandarea logaritmilor argumentele trebuie s fie pozitive,
funcia expand poate expanda toate funciile trigonometrice directe, sin(a+b),
cos(a+b), tan(a+b),
funcia expand poate expanda toate funciile trigonometrice inverse, sin(k *
asin(x)), cos(k * acos(x)), tan(k * atan(x)), etc., unde k este un numr natural.
Funcia simplify cu forma
simplify(f)
aplic identitile din Tabelul 39 asupra expresiilor simbolice..
f simplify(f)
sin(x)^2 + cos(x)^2 1
a^x * a^y a^(x+y)
a^x / a^y a^(x-y)
exp(a) * exp(b) exp(a + b)
exp(a) / exp(b) exp(a b)
exp(log(x)) x
log(exp(x) x
Tabelul 39. Simplificarea expresiilor simbolice.
146
15 Operaii cu polinoame simbolice
In cele ce urmeaz se vor considera polinoame simbolice cu coeficieni numere
raionale. Fie polinomul
a
n
x
n
+ a
n-1
x
n-1
+ + a
1
x + a
0

Polinomul poate fi reprezentat n una din urmtoarele forme:
o combinaie liniar a puterilor lui x, ca mai sus,
produs de factori ireductibili peste mulimea numerelor raionale,
sub forma Horner a
0
+ x(a
1
+ x(x(a
n-1
+ xa
n
))).
Conversia ntre aceste trei forme se face cu urmtoarele funcii:
funcia collect(p) transform polinomul n prima form,
funcia factor(p) transform polinomul n forma a doua,
funcia horner(p) transform polinomul n forma a treia.
Argumentul p al acestor funcii poate fi i un vector sau o matrice cu elementele
expresii simbolice.
Funcia collect mai are nc o form
collect(p, v)
n care al doilea parametru v specific variabila dup care se va face dezvoltarea.
Exemplu. Fie polinomul
p(x) = x
3
7x
2
+ 14x 8
Vom converti polinomul n cele trei forme cu funciile de mai sus.
syms p, x;
p = x^3 7*x^2 + 14 * x -8;
q = factor(p)
q =
(x-1)*(x-2)*(x-4)
collect(q)
ans =
x^3-7*x^2+14*x-8
s = horner(p)
s =
-8+(14+(-7+x)*x)*x
collect(s)

ans =
x^3-7*x^2+14*x-8
Funcia factor poate descompune n factori i numere ntregi sau tablouri cu ntregi
simbolici. In cazul tablourilor funcia factor descompune fiecare element. Reamintim
c, ntregii simbolici se creaz cu funcia sym.
147
Exemplu. Vom factoriza numerele 22, 333, 4444, , 999999999. Pentru aceasta vom
construi un vector simbolic cu numerele de mai sus i vom aplica funcia factor asupra
lui.
syms N;
for k = 2:9
S = 0;
for j = 1:k
S = S + 10^(j 1);
end
S = S * k;
N(k - 1) = S;
end
[N factor(N)]
ans =

[ 22, (2)*(11) ]
[ 333, (3)^2*(37) ]
[ 4444, (2)^2*(11)*(101) ]
[ 55555, (5)*(41)*(271) ]
[ 666666, (2)*(3)^2*(7)*(11)*(13)*(37) ]
[ 7777777, (7)*(239)*(4649) ]
[ 88888888, (2)^3*(11)*(73)*(101)*(137) ]
[ 999999999, (3)^4*(37)*(333667) ]
Exemplu. S factorizm polinoamele de forma x
n
+ 1 i x
n
1 pn la gradul 6.
syms x;
n = (1:6);
p = x .^ n +1;
q = x .^ n 1;
f = factor(p);
g = factor(q);
[p, f, q, g]
ans =

[ x+1, x+1, x-1, x-1]
[ x^2+1, x^2+1, x^2-1, (x-1)*(x+1)]
[ x^3+1, (x+1)*(x^2-x+1), x^3-1, (x-1)*(x^2+x+1)]
[ x^4+1, x^4+1, x^4-1, (x-1)*(x+1)*(x^2+1)]
[ x^5+1, (x+1)*(x^4-x^3+x^2-x+1), x^5-1, (x-1)*(x^4+x^3+x^2+x+1)]
[ x^6+1, (x^2+1)*(x^4-x^2+1), x^6-1, (x-1)*(x+1)*(x^2+x+1)*(x^2-x+1)]
Este posibil s convertim un polinom cu coeficieni numerici ntr-un polinom
simbolic. Coeficienii numerici sunt dai printr-un vector n ordinea descresctoare a
puterilor lui x i ei sunt convertii n numere raionale simbolice. Coversia se face cu
funcia
148
poly2sym(c)
poly2sym(c, v)
In prima forma variabila implicit este x, n forma a doua este v.
Este posibil de asemenea conversia unui polinom symbolic cu coeficienii numere
raionale ntr-un polinom numeric. Aceast conversie se face cu funcia
sym2poly(s)
unde s este polinomul symbolic. Rezultatul funciei este un vector numeric cu
coeficienii polinomului n ordinea descresctoare a puterilor variabilei independente
a polinomului simbolic.
149
16 Algebr liniar simbolic
Operaiile ce se pot efectua asupra matricelor simbolice se mpart n dou categorii:
operaiile cunoscute efectate asupra matricelor cu elemente simbolice,
conversia unei matrice numerice ntr-o matrice cu numere simbolice i
efectuarea operaiilor cunoscute cu numere simbolice.
Operaiile ce se pot efectua asupra unei matrice simbolice A sunt cele din Tabelul 40.
Operaia Funcia
calculul determinantului det(A)
calculul inversei inv(A)
calculul spaiului nul null(A)
calculul spaiului coloanelor colspace(A)
e
At
expm(A * t)
Tabelul 40. Operaii asupra matricelor cu elemente simbolice.
Operaiile ce se pot efectua asupra matricelor numerice i matricelor cu numere
simbolice sunt artate n Tabelul 41.
Operaia Funcia
Calculul valorilor proprii
E = eig(A)
[V, E] = eig(A)
Calculul polinomului caracteristic
poly(A)
poly(A, v)
Forma canonic Jordan
J = jordan(A)
[V, J] = jordan(A)
Descompunerea dup valorile
singulare
S = svd(A)
[U, S, V] = svd(A)
Tabelul 41. Operaii asupra matricelor cu numere simbolice.
Funcia poly are ca rezultat polinomul caracteristic al matricei A n form simbolic.
In prima form, variabila polinomului este variabila simbolic implicit, determinat
cu ajutorul funciei findsym, n a doua forma este v.
Exemplu. Fie matricea simbolic
1
1
1
]
1

1 1 1
1 2 2
2 1 a
S se calculeze determinantul i inverse acestei matrice.
syms a M;
M = [1, a, 2; 2, 2, 1; 1, 1, -1];
D = det(M)
D =
-3+3*a
D = inv(M)
D =
150
[ -1/(a-1), 1/3*(a+2)/(a-1), 1/3*(a-4)/(a-1)]
[ 1/(a-1), -1/(a-1), 1/(a-1)]
[ 0, 1/3, -2/3]
Exemplu. Fie matricea
1
1
1
]
1

1 0 0
0 2 0
1 0 1
S se determine forma canonic Jordan.
syms M;
M = sym([1, 0, 1; 0, 2, 0; 0, 0, 2])
J = jordan(M)
J =
2 0 0
0 1 1
0 0 1
[V, J] = jordan(M)
V =
0 1 0
1 0 0
0 0 1
J =
2 0 0
0 1 1
0 0 1
151
17 Rezolvarea simbolic a ecuaiilor algebrice
Fie e o variabil simbolic ce are ca valoare o expresie algebric simbolic.
Rezolvarea ecuaiei algebrice
e = 0
se face cu funcia solve cu formele
solve (e, x)
cnd se rezolv ecuaia dup variabila simbolic x i
solve(e)
cnd expresia simbolic e are o singur variabil, sau ecuaia se rezolv dup variabila
simbolic implicit aleas dup regula enunat n paragraful relativ la substituii.
Funcia solve poate avea ca argument i o expresie simbolic ntre paranteze:
solve (expresie imbolic, x)
sau
solve(expresie simbolic)
Rezultatul funciei solve este:
un vector cu soluii, dac rezultatul funciei solve este un vector cu un numr
de componente egal cu numrul de variabile,
o structur n care numele cmpurilor sunt numele variabilelor ecuaiilor, dac
rezultatul funciei solve este o variabil.
Exemplu. S determinm soluiile ecuaiei de gradul doi
ax
2
+ bx + c = 0
syms a b c x f;
f = a*x^2+b*x+c;
solve(f)
Exemplu. S rezolvm ecuaia de gradul doi de mai sus n raport cu variabila b.
syms a b c x f;
f = a*x^2+b*x+c;
solve(f, b)
In cazul cnd ecuaia de rezolvat are forma f(x) = g(x), utilizm funcia solve cu
forma a doua
solve(f(x) = g(x), x)
sau
solve(f(x) = g(x))
Exemplu.
Funcia solve poate rezolva i sisteme de ecuaii algebrice. Fie sistemul de dou
ecuaii algebrice
f(x, y) = 0
g(x, y) = 0
Dac dorim ca rezultatul funciei solve s fie un vector cu soluii, funcia solve are
forma
[x, y] = solve(f, g)
sau forma
[x, y] = solve(f(x, y), g(x, y))
152
Dac dorim ca rezultatul s fie o structur, n stnga semnului egal vom scrie o
variabil.
Exemplu. S rezolvm sistemul de ecuaii:
( )
2
x xy tg
1 2
2
2
2
+ y
x
syms x y;
f=tan(x*y)-x^2

f =
tan(x*y)-x^2

g=0.5*x^2+2*y^2-1

g =
1/2*x^2+2*y^2-1
s = solve(f,g)
s =
x: [2x1 sym]
y: [2x1 sym]
Rezultatul este o structur cu dou cmpuri, x i y.
s.x

ans =
[ 0]
[ 0]

s.y

ans =
[ 1/2*2^(1/2)]
[ -1/2*2^(1/2)]
Exemplu. Fie de rezolvat sistemul de trei ecuaii:
1 log +
,
_

z
y
x
2 2
2 4 . 0 x z y +
20
2
xy
z +
syms x y z
f = x - log(y/z)-1

f =
153
x-log(y/z)-1

g=y-0.4-z^2+2*x^2

g =
y-2/5-z^2+2*x^2

h=z-2-x*y/20

h =
z-2-1/20*x*y

s=solve(f,g,h)
s =
x: [1x1 sym]
y: [1x1 sym]
z: [1x1 sym]
In acest caz soluia s este o structur cu componentele x, y i z. Rezultatele sunt:
s.x

ans =
-1.4453427795204872025615216821349

s.y

ans =
.17231322974245725394289003908468

s.z

ans =
1.9875474158787942273692241116145
154
18 Rezolvarea simbolic a ecuaiilor difereniale
ordinare
Fie ecuaia diferenial ordinar de ordinul nti
y = f(y, t)
Soluia general a acestei ecuaii difereniale depinde de o constant arbitrar C. Dac
ne intereseaz o soluie care la momentul iniial t
0
trece prin punctul y
0
, constanta C ia
valoarea y
0
. In continuare vom presupune c soluia ecuaiei difereniale exist. In
funcie de proprietile funciei f, soluia poate s fie unic sau nu.
Rezolvarea ecuaiilor difereniale ordinare se face cu funcia dsolve care poate rezolva
ecuaii difereniale de ordin superior i sisteme de ecuaii difereniale ordinare.
Funcia dsolve are ca parametri:
expresia simbolic a ecuaiei difereniale sau, n cazul unui sistem, expresiile
simbolice ale ecuaiilor sistemului; n aceste expresii, derivata de ordin nti
este notat cu D, iar derivatele de ordin superior cu D2, D3, , Dn. In notaia
de mai sus dy/dt se noteaz cu Dy, d
2
y/dt
2
se noteaz cu D2y, etc.
condiiile iniiale ale ecuaiei difereniale, dac exist, sunt argumentele
urmtoare ale funciei dsolve; ele au forma y(t
0
) = y
0
, Dy(t
0
) = y
0
, etc.,
variabila independent implicit este t; variabila independent poate fi i alt
variabil simbolic, care va fi ultimul argument al funciei dsolve.
Toi parametrii funciei dsolve sunt inclui ntre apostrofuri.
Soluia ecuaiei difereniale poate fi:
un vector cu un numr de componente egal cu cel al variabilelor dependente,
dac rezultatul funciei dsolve este un vector,
o structur n care numele cmpurilor sunt numele variabilelor dependente,
dac rezultatul funciei dsolve este o variabil.
Exemplu. Fie ecuaia diferenial
y + y = 0
S calculm soluia general a ecuaiei i soluia ce trece prin punctele y(0) = 1,
y(0)=-1. Instruciunile sunt urmtoarele:
syms y
y = dsolve(D2y + y = 0)
syms y
y = dsolve(D2y + y = 0, y(0) = 1, Dy(0) = -1)
Exemplu. Fie sistemul de ecuaii difereniale:
x = x y
y = x + y
Vom calcula soluia odat ntr-un vector i alt dat ntr-o structur.
syms x y
[x, y] = dsolve(Dx = x y, Dy = x + y)
x =
-exp(t)*(sin(t)*C1-cos(t)*C2)

155
y =
exp(t)*(cos(t)*C1+sin(t)*C2)
s = dsolve(Dx = x y, Dy = x + y)
s =
x: [1x1 sym]
y: [1x1 sym]
s.x
ans =
-exp(t)*(sin(t)*C1-cos(t)*C2)
s.y
ans =
exp(t)*(cos(t)*C1+sin(t)*C2)
[x, y] = dsolve('Dx = x - y', 'Dy = x + y', 'x(0) = 1', 'y(0) = 2')

x =
-exp(t)*(2*sin(t)-cos(t))

y =
exp(t)*(2*cos(t)+sin(t))
Exemplu. S se rezolve ecuaia diferenial
y''+3y'+2y = e
3t
+ 2t + 1
[y] = dsolve('D2y + 3* Dy + 2*y = exp(3*t) +2*t + 1')

y =

1/20*exp(3*t)*(1+20*t*exp(-3*t)-20*exp(-3*t))+C1*exp(-t)+C2*exp(-2*t)
[y] = dsolve('D2y + 3* Dy + 2*y = exp(3*t) +2*t + 1', 'y(0) = 1', 'Dy(0) = 0')

y =
1/20*exp(3*t)*(1+20*t*exp(-3*t)-20*exp(-3*t))+11/4*exp(-t)-4/5*exp(-2*t)
156
19 Transformri integrale
In acest capitol vom prezenta funciile ce calculeaz transformatele Fourier, Laplace
i Z, directe i inverse.
19.1 Transformata Fourier
Transformata Fourier direct se definete cu formula
( ) ( )

dx e x f w F
iwx
unde f(x) este o funcie simbolic scalar de argument x, iar F(w) este transformata
Fourier de argument w.
Transformata Fourier direct simbolic a funciei f se calculeaz cu funcia:
F = fourier(f)
F = fourier(f, v)
F = fourier(f, u, v)
In prima form, variabila funciei f este x, iar a funciei F este w (variabilele
implicite). In forma a doua, variabila funciei f este x, (variabila implicit), iar a
funciei F este v. In forma a treia, variabila funciei f este u, iar a funciei F este v.
Transformata Fourier invers se definete cu formula
( ) ( )


dw e w F x f
iwx
2
1
unde F(w) este o funcie simbolic scalar de argument w, iar f(x) este transformata
Fourier invers de argument x.
Transformata Fourier invers simbolic a funciei F se calculeaz cu funcia:
f = ifourier(F)
f = ifourier(F, u)
f = ifourier(F, v, u)
In prima form, variabila funciei F este w, iar a funciei f este x (variabilele
implicite). In forma a doua, variabila funciei F este w, (variabila implicit), iar a
funciei f este u. In forma a treia, variabila funciei F este v, iar a funciei f este u.
Exemplu. S calculm transformata Fourier a funciei
( )
2
x
e x f

syms x;
f = exp(-x^2);
F = fourier(f)
F =
pi^(1/2)*exp(-1/4*w^2)
Pentru verificare vom calcula transformata Fourier invers a funciei F
ifourier(F)

ans =
exp(-x^2)
Exemplu. S se calculeze transformata Fourier a funciei
157
( ) ( ) t e t f
at
1

cu a >0. Funcia 1(t) este funcia treapt unitar


( )

'

>
<

0 1
0 0
1
t
t
t
Ea este predefinit ca heaviside(t).
syms t f F
syms a positive
f = exp(-a*t)*heaviside(t)

f =
exp(-a*t)*heaviside(t)

F = fourier(f)

F =
1/(a+i*w)
Pentru verificare vom calcula transformata Fourier invers a funciei F
ifourier(F)

ans =
exp(-a*x)*heaviside(x)
19.2 Transformata Laplace
Transformata Laplace direct se definete cu formula
( ) ( )

0
dt e t f s F
ist
unde f(t) este o funcie simbolic scalar de argument t, iar F(s) este transformata
Laplace de argument s.
Transformata Laplace direct simbolic a funciei f se calculeaz cu funcia:
F = laplace(f)
F = laplace (f, v)
F = laplace (f, u, v)
In prima form, variabila funciei f este x, iar a funciei F este w (variabilele
implicite). In forma a doua, variabila funciei f este t, (variabila implicit), iar a
funciei F este v. In forma a treia, variabila funciei f este u, iar a funciei F este v.
Transformata Laplace invers se definete cu formula
( ) ( )

i c
i c
ist
ds e s F
i
x f
2
1
unde F(s) este o funcie simbolic scalar de argument s, iar f(x) este transformata
Laplace invers de argument t.
Transformata Laplace invers simbolic a funciei F se calculeaz cu funcia:
f = ilaplace(F)
f = ilaplace (F, u)
f = ilaplace (F, v, u)
158
In prima form, variabila funciei F este s, iar a funciei f este t (variabilele implicite).
In forma a doua, variabila funciei F este s, (variabila implicit), iar a funciei f este u.
In forma a treia, variabila funciei F este v, iar a funciei f este u.
Exemplu. S calculm transformata Laplace a funciei
( )
at
e t f

syms f F t s
syms a positive
f = exp(-a *t)

f =
exp(-a*t)

F = laplace(f)

F =
1/(s+a)
Exemplu. S calculm transformata Laplace invers a funciei
( )
a s
s F
+

1

syms f F s t
syms a positive
F = 1/(s+a)

f = ilaplace(F)

f =
exp(-t*a)
19.3 Transformata Z
Transformata Z direct se definete cu formula
( ) ( )

0 n
n
z n f z F
unde f este o funcie simbolic scalar de argument n, iar F(z) este transformata Z de
argument z.
Transformata Z direct se calculeaz cu funcia:
F = ztrans(f)
F = ztrans(f, w)
F = ztrans(f, k, w)
In prima form variabila funciei f este n, iar a funciei F este z, In a doua form
variabila funcie f este n (variabila implicit), iar variabila funciei F este w. In a treia
forma variabila funciei f este k, iar a funciei F este w.
Transformata Z invers se calculeaz cu formula
( ) ( )

R z
n
dz z z F
i
n f
1
2
1

159
unde F(z) este o funcie simbolic scalar de argument z, iar f(n) este transformata Z
invers de argument n.
Transformata Z invers se calculeaz cu funcia:
f = iztrans(F)
f = iztrans(F, k)
f = iztrans(F, w, k)
In prima form, variabila funciei F este z, iar a funciei f este n (variabilele implicite).
In forma a doua, variabila funciei F este z, (variabila implicit), iar a funciei f este k.
In forma a treia, variabila funciei F este w, iar a funciei f este k.
In exemplele urmtoare vom nota cu T perioada de eantionare. Momentele de
eantionare vor fi nT.
Exemplu. S calculm transformata Z a funciei
( ) ) exp( anT n f
Funcia de timp ce este eantionat este f(t) = e
-at
.
syms a n T
f = exp(-a*T*n)

f =
exp(-a*T*n)

F = ztrans(f)

F =
z/exp(-a*T)/(z/exp(-a*T)-1)

Vom calcula acum transformata Z invers a funciei F

iztrans(F)

ans =
exp(-a*T)^n
Exemplu. S calculm transformata Z invers a funciei
( )
a z
z
z F

syms a z;
F = z / (z a);
f = iztrans(F)
f =
a^n
Funcia eantionat este f(n) = a
n
. Cu notaia
T
e a

obinem ( )
nT
e n f

. In
consecin, funcia de timp ce este eantionat este ( )
t
e t f

, unde
T
ln

.
Exemplu. S calculm transformata Z invers a funciei
( )
a z
z
z F
+

160
syms a z;
F = z / (z + a);
f = iztrans(F)

f =
(-a)^n
Exemplu. S se calculeze transformata Z invers a funciei
( )
( )
2
1

z
z
z F
syms z F
F = z/(z-1)^2

F =
z/(z-1)^2

f = iztrans(F)
n
Funcia de timp ce este eantionat este f(t) = t/T. Vom calcula acum transformata Z a
funciei f.
ztrans(f)

ans =
z/(z-1)^2
161