You are on page 1of 97

APLICAII MATLAB

1. PREZENTARE GENERAL
MATLAB = Limbaj de nalt performan pentru proiectarea asistat de calculator
MATLAB este n acelai timp un limbaj de programare i un sistem de dezvoltare care integreaz
calculul, vizualizarea i programarea ntr-un mediu uor de utilizat (easy-to-use), problemele i
soluiile acestor probleme fiind exprimate ntr-un limbaj matematic accesibil.

Domenii de utilizare:
Matematic i calcul numeric
Dezvoltarea algoritmilor
Modelare, simulare i testarea prototipurilor
Analiza i vizualizarea datelor
Grafica inginereasc i din tiinele aplicate
Dezvoltarea de aplicaii, inclusiv GUI

MATLAB = sistem interactiv care are ca element de baz tabloul, matricea, ceea ce permite
rezolvarea problemelor de calcul numeric, n special cele care necesit prelucrarea de
vectori sau matrici.
Numele MATLAB provine de la Matrix laboratory
Firma productoare este The MathWorks, Inc., SUA
MATLAB-ul a evoluat:
- n mediul universitar unde este pachetul standard pentru cursurile introductive i avansate de
matematic, inginerie i tiine
- n industrie, unde este utilizat pentru cercetarea de nalt randament, dezvoltare i producie
MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor. Aceste
toolbox-uri permit nvarea i aplicarea tehnologiilor specializate din diverse domenii. Sunt
disponibile toolbox-uri pentru domenii cum ar fi: procesarea numeric a semnalelor, sisteme
de conducere automat, reele neurale, logic fuzzy, wavelet, simulare (SIMULINK),
identificare etc.
Sistemul MATLAB const n cinci pri principale:

Limbajul MATLAB
Mediul de lucru MATLAB
Handle Graphics
Biblioteca de funcii matematice a MATLAB-ului
Interfaa de aplicaii program a MATLAB-ului (API)

Limbajul MATLAB: Reprezint un limbaj de nivel nalt de tip matrice/tablou cu instruciuni


de control al salturilor, funcii, structuri de date, intrri/ieiri i cu proprieti de programare
orientat pe obiecte. Facilitile de programare sunt organizate pe 6 directoare:
ops
Lang

Operators and special characters.


Programming language constructs.

Strfun

Character strings.

Iofun
Timefun
Datatypes

File input/output.
Time and dates.
Data types and structures.

Mediul de lucru MATLAB: Reprezint un set de faciliti care permit manevrarea


variabilelor n spaiul de lucru, importul i exportul de date, dezvoltarea, manipularea, editarea i
depanarea fiierelor MATLAB (.m) i a aplicaiilor MATLAB. Aceste faciliti sunt organizate n
directorul:
general

General purpose commands.

Handle Graphics: Reprezint sistemul grafic al MATLAB-ului. Cuprinde comenzi de nalt


nivel pentru vizualizarea datelor bi i tri-dimensionale, procesarea imaginilor, animaie, prezentri
de grafice. Permite de asemenea utilizarea unor comenzi de nivel sczut pentru crearea unor
interfee grafice GUI. Funciile grafice sunt organizate n 5 directoare:
graph2d
Two-dimensional graphs.
Graph3d
Three-dimensional graphs.
Specgraph
Specialized graphs.
Graphics
Handle Graphics.
Uitools
Graphical user interface tools.
Biblioteca de funcii matematice a MATLAB-ului: Reprezint o colecie complex de
algoritmi de calcul pornind de la funcii elementare (sinus, cosinus etc.) pn la funcii sofisticate
(inversarea de matrice, valori proprii, funcii Bessel, FFT etc.). Funciile matematice sunt organizate
n 8 directoare:
elmat
Elfun

Elementary matrices and matrix manipulation.


Elementary math functions.

Specfun

Specialized math functions.

Matfun

Matrix functions numerical linear algebra.

Datafun

Data analysis and Fourier transforms.

Polyfun

Interpolation and polynomials.

Funfun

Function functions and ODE solvers.

Sparfun

Sparse matrices.

Interfaa de aplicaii program a MATLAB-ului (API) este o bibliotec care permite


scrierea de programe n C sau Fortran care interacioneaz cu MATLAB-ul. Include faciliti pentru
apelarea rutinelor din MATLAB, apelarea MATLAB-ului ca main de calcul, scrierea i citirea
fiierelor de tip .MAT .
Pachetul SIMULINK

SIMULINK este un pachet software ataat MATLAB-ului i reprezint un sistem


interactiv pentru simularea dinamicii sistemelor neliniare (bineneles i a celor liniare). Este
conceput sub forma unei interfee grafice care permite crearea unui model prin trasarea
schemei bloc a sistemului i apoi simularea dinamicii sistemului.

SIMULINK poate lucra cu sisteme liniare, neliniare, continue, discrete,


multivariabile etc.
2


SIMULINK bebeficiaz de aa-numitele Blockset-uri care sunt de fapt biblioteci
suplimentare care conin aplicaii specializate din domenii cum ar fi: comunicaii, procesarea
semnalelor etc.

Real-time Workshop este un program foarte important care permite generarea unui
cod C pentru schemele bloc create n SIMULINK i prin urmare permite rularea de aplicaii
n timp real de o mare diversitate.
Toolbox-urile MATLAB
Toolbox-urile reprezint o familie de aplicaii care permit nvarea i aplicarea tehnologiilor
specializate din diverse domenii. Aceste toolbox-uri sunt colecii de funcii MATLAB (functions)
(M-files) care extind mediul MATLAB pentru rezolvarea unor clase particulare de probleme.
Cteva din cele mai utilizate aplicaii sunt prezentate n figura urmtoare.

2. FUNDAMENTELE PROGRAMRII N MATLAB


3

2.1.
Expresii fundamentale
MATLAB-ul lucreaz cu expresii matematice ca i celelalte limbaje de programare, dar spre
deosebire de majoritatea acestor limbaje, aceste expresii implic la scar larg lucrul cu matrici.
Expresiile sunt alctuite cu ajutorul urmtoarelor tipuri:
Variabile
Numere
Operatori
Funcii
Variabile
MATLAB-ul nu necesit declararea dimensiunii variabilelor, deoarece la ntlnirea unui nou
nume de variabil genereaz automat variabila respectiv i aloc spaiul necesar de
memorie.
Numele unei variabile este o liter, urmat de un numr orict de mare de litere, cifre sau
simboluri. Din acest numr orict de mare sunt oprite primele 31 de caractere.
MATLAB-ul este case sensitive - face distincie ntre literele mici i cele mari.
Exemplu:
a = 30

creeaz o matrice 1 x 1 cu numele a i stocheaz valoarea acesteia 30 ntr-o singur locaie


corespunztoare singurului element al matricei.
Numere
MATLAB-ul utilizeaz notaia zecimal, cu punct zecimal opional i cu semn + sau -. Se
utilizeaz i notaia tiinific cu litera e pentru a specifica o putere a lui 10. Reprezentarea
numerelor imaginare este realizat cu litera i sau j ca sufix.
Exemple:
3
9.6397238
1i

-99
1.60210e-20
-3.14159j

0.0001
6.02252e23
3e5i

Toate numerele sunt stocate intern utiliznd formatul long specificat de standardul IEEE n
virgul mobil (precizie de 16 zecimale semnificative n domeniul 10-308 la 10+308).
Operatori
Expresiile utilizeaz operatori aritmetici uzuali:
+

Adunare

Scdere

Multiplicare

mprire

mprire la stnga

Ridicarea la o putere

'

Transpusa complex conjugat

(
)

Operatorul de specificare
ordinii de evaluare

Funcii
MATLAB-ul furnizeaz un mare numr de funcii matematice elementare standard (abs,
sqrt, exp, sin ).

Exist i funcii matematice avansate (funcii Bessel, gama etc.), multe dintre acestea acceptnd
argumente complexe.
Pentru vizualizarea funciilor elementare se poate tasta:
help elfun

Pentru a vedea lista funciilor avansate se poate tasta:


help specfun
help elmat

O parte din funcii (cum ar fi sqrt, sin)sunt de tip built-in, adic sunt o parte a nucleului
MATLAB, au o mare eficien, dar detaliile constructive nu sunt accesibile utilizatorului.
Alte funcii sunt implementate ca fiiere MATLAB (M-files) i pot fi chiar modificate.
Cteva funcii furnizeaz valorile unor constante universale:
pi

3.14159265

Imaginary unit, -1

Same as I

Eps

Floating-point relative precision, 2-52

Realmin

Smallest floating-point number, 2-1022

Realmax

Largest floating-point number, 21023

Inf

Infinity

NaN

Not-a-number

Numele funciilor nu sunt rezervate i deci este posibil suprascrierea lor.


Exemplu:
eps = 1.e-6
Funcia original este reconstituit prin comanda:
clear eps
Expresii
Exemple de expresii i rezultatele corespunztoare ale evalurii acestor expresii:
rho = (1+sqrt(5))/2
rho =
1.6180
a = abs(3+4i)
a =
5
z = sqrt(besselk(4/3,rho-i))
z =
0.3730+ 0.3214i
huge = exp(log(realmax))
huge =
1.7977e+308

toobig = pi*huge
5

toobig =
Inf

2.2.
Help on-line, formatul datelor, opiuni de salvare
Help on-line
Pentru rularea MATLAB pe un PC trebuie pur i simplu executat un dublu click cu mouse-ul pe
icon-ul MATLAB. Dac sistemul de operare nu este de tip Windows (este de tip UNIX) trebuie
tastat matlab dup prompter-ul sistemului de operare.
o Limbajul MATLAB este mult mai simplu de nvat dac se renun la inspectarea arid a
listelor cu variabile, funcii i operatori i se utilizeaz n schimb comenzile help,
helpdesk, demo tastate direct de la prompterul MATLAB.
o Pentru aflarea tuturor informaiilor utile despre o comand sau o funcie se tasteaz help
urmat de numele comenzii sau funciei respective.
o Pachetul MATLAB dispune de asemenea de informaii complete despre utilizare sub forma
unei documentaii tip .pdf.
o n cazuri particulare se poate apela la INTERNET, existnd o legtur la pagina Web a
firmei productoare.
o Alte comenzi utile pentru aflarea de informaii sunt: helpwin, lookfor, help help.
Exemple sugestive de utilizare a comenzii help:
help sin
SIN

Sine.
SIN(X) is the sine of the elements of X.

Overloaded methods
help sym/sin.m
help exp
EXP

Exponential.
EXP(X) is the exponential of the elements of X, e
to the X.
For complex Z=X+i*Y, EXP(Z) =
EXP(X)*(COS(Y)+i*SIN(Y)).
See also LOG, LOG10, EXPM, EXPINT.
Overloaded methods
help sym/exp.m
help demtseries/exp.m
help plot
PLOT

Linear plot.

PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix, then the


vector is plotted versus the rows or columns of the matrix, whichever line up.
If X is a scalar and Y is a vector, length(Y) disconnected points are plotted.
PLOT(Y) plots the columns of Y versus their index. If Y is complex, PLOT(Y)
is equivalent to PLOT(real(Y),imag(Y)). In all other uses of PLOT, the imaginary
part is ignored.
Various line types, plot symbols and colors may be obtained with PLOT(X,Y,S)
where S is a character string made from one element from any or all the
following 3 colunms:
y
m
c

yellow
magenta
cyan

.
o
x

point
circle
x-mark

:
-.

solid
dotted
dashdot

r
g
b
w
k

red
green
blue
white
black

+
*
s
d
v
^
<
>
p
h

plus
-star
square
diamond
triangle (down)
triangle (up)
triangle (left)
triangle (right)
pentagram
hexagram

dashed

For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus at each
data point; PLOT(X,Y,'bd') plots blue diamond at each data point but does not
draw any line.
PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by the
(X,Y,S) triples, where the X's and Y's are vectors or matrices and the S's are
strings.
For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a solid
yellow line interpolating green circles at the data points.
The PLOT command, if no color is specified, makes automatic use of the
colors specified by the axes ColorOrder property. The default ColorOrder is
listed in the table above for color systems where the default is yellow for one
line, and for multiple lines, to cycle through the first six colors in the
table. For monochrome systems, PLOT cycles over the axes LineStyleOrder
property.
PLOT returns a column vector of handles to LINE objects, one handle per line.
The X,Y pairs, or X,Y,S triples, can be followed by parameter/value pairs to
specify additional properties of the lines.
See also SEMILOGX, SEMILOGY, LOGLOG, GRID, CLF, CLC, TITLE, XLABEL, YLABEL,
AXIS, AXES, HOLD, COLORDEF, LEGEND, and SUBPLOT.

Formatul datelor
MATLAB-ul afieaz numerele cu 5 zecimale (setare implicit). Aceast setare se poate
modifica cu ajutorul comenzii format:
FORMAT Set output format.
All computations in MATLAB are done in double precision.
FORMAT may be used to switch between different output
display formats as follows:
FORMAT
Default. Same as SHORT.
FORMAT SHORT
Scaled fixed point format with 5 digits.
FORMAT LONG
Scaled fixed point format with 15 digits.
FORMAT SHORT E Floating point format with 5 digits.
FORMAT LONG E Floating point format with 15 digits.
FORMAT SHORT G Best of fixed or floating point format with
5 digits.
FORMAT LONG G Best of fixed or floating point format with
15 digits.
FORMAT HEX
Hexadecimal format.
FORMAT +
The symbols +, - and blank are printed
for positive, negative and zero elements.
Imaginary parts are ignored.
FORMAT BANK
Fixed format for dollars and cents.
FORMAT RAT
Approximation by ratio of small integers.
Spacing:
FORMAT COMPACT Suppress extra line-feeds.
FORMAT LOOSE
Puts the extra line-feeds back in.

Exemple:
c=1.333456789233
c =
1.3335

format long
c
c =
1.33345678923300
format short e
c
c =
1.3335e+000
format long e
c
c =
1.333456789233000e+000
format
c
c =
1.3335

Opiuni de salvare

Pentru salvarea variabilelor curente cu care se lucreaz n MATLAB la ncheierea unei


sesiuni de lucru se poate utiliza comanda save.

Aceast comand va salva toate variabilele curente generate de ctre utilizator ntr-un
fiier numit matlab.mat . Dac se dorete se poate da un nume fiierului de date n care se
salveaz variabilele.
Exemplu:
save date c determ A

realizeaz salvarea datelor c, determ i A ntr-un fiier date.mat .

Pentru restituirea variabilelor ntr-o sesiune de lucru ulterioar se folosete comanda


load. Exemplu:
load date

Dac se dorete aflarea variabilelor curente se pot utiliza comenzile who,whos:

who
Your variables are:
A

whos
Name

determ
Size

A
c
determ

2x2
1x1
1x1

Bytes
32
8
8

Class
double array
double array
double array

Grand total is 6 elements using 48 bytes

Pentru tergerea tuturor variabilelor curente din memoria de lucru se poate utiliza
comanda clear.
2.3.

Crearea fiierelor MATLAB (.m files)

Deoarece este mult mai comod i util dect introducerea comenzilor linie dup linie la
prompterul MATLAB, se lucreaz cu fiiere text care conin aceste linii program cu comenzile
necesare.
8

Aceste fiiere conin cod n limbajul MATLAB i sunt denumite .m files (sau M-files). Fiierele
se creeaz utiliznd un editor de text i apoi se utilizeaz ca o comand MATLAB obinuit.
Sunt dou tipuri de fiiere .m:

Fiiere Script, care nu accept argumente de intrare i nu returneaz argumente de ieire.


Aceste fiiere opereaz cu datele din spaiul de lucru.

Rutine (funcii), care accept argumente de intrare i returneaz argumente de ieire.


Variabilele utilizate sunt variabile locale (interne) ale funciei.

Pentru a vedea coninutul unui fiier MATLAB, de exemplu evolutie_studii.m, se folosete


comanda:
type evolutie_studii

Fiiere Script
Atunci cnd se apeleaz la un fiier script, MATLAB-ul execut comenzile gsite n fiierul
respectiv. Fiierele script pot lucra cu date din spaiul de lucru (workspace) sau pot crea date noi cu
care opereaz. Script-urile nu furnizeaz argumente de ieire, iar variabilele create rmn n
workspace, pentru a fi eventual folosite n calculele ulterioare.
Fiierele script pot furniza ieiri grafice folosind funcii cum ar fi plot,bar.
Exemplu de fiier script: magicrank.m, cu urmtoarele comenzi MATLAB:
% Investigate the rank of magic squares
r = zeros(1,32);
for n = 3:32
r(n) = rank(magic(n));
end
r
bar(r)

La tastarea numelui fiierului script (fr extensia .m):


magicrank

MATLAB-ul execut comenzile, calculeaz rangul unor matrici (matricile magice), i traseaz
graficul cu rezultatele calculului. Dup ce se termin execuia fiierului, variabilele n i r rmn n
spaiul de lucru.
Graficul rezultat este prezentat n continuare:

Funcii (rutine)
9

Aceste fiiere accept argumente de intrare i furnizeaz argumente de ieire. Numele fiierului
MATLAB (M-file) i cel al funciei (subrutinei) respective trebuie s fie identice. Funciile
(subrutinele) lucreaz cu variabile proprii separate de spaiul de lucru uzual al MATLAB-ului.
Exemplu: funcia rank. Fiierul M-file rank.m este disponibil n directorul
toolbox/matlab/matfun
Se poate vizualiza fiierul cu comanda:
type rank
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of
% linearly independent rows or columns of a matrix A
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default
% tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
tol = max(size(A)) * max(s) * eps;
end
r = sum(s > tol);

Prima linie a unei funcii M-file ncepe cu cuvntul cheie function. Aceast linie d numele
funciei, ordinea i numrul argumentelor.
Liniile urmtoare (care ncep cu caracterul %) sunt linii de comentariu, care de fapt sunt i
liniile afiate atunci cnd se apeleaz la comanda
help rank

Restul liniilor sunt executabile. Variabila s, ca i r, A, tol sunt variabile locale ale
funciei i sunt separate de variabilele din workspace.
Funcia rank poate fi utilizat n diferite moduri:
rank(A)
r = rank(A)
r = rank(A,1.e-6)

Variabile globale
Dac se dorete ca mai multe astfel de subrutine s utilizeze o anume variabil comun, se
declar variabila respectiv ca global utiliznd comanda global n toate funciile respective.
Exemplu: fiierul falling.m:

function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;

Se introduc apoi n mod interactiv liniile:


global GRAVITY
GRAVITY = 32;
y = falling((0:.1:5)');

Funcia eval
Funcia eval lucreaz cu variabil text pentru implementarea unei faciliti puternice de tip
macro text.
Expresia
eval(s)
folosete interpreter-ul MATLAB pentru evaluarea expresiei sau execuia declaraiei din irul de
caractere s.
Vectorizarea
10

Pentru a obine o vitez de calcul mare, este foarte important aa-numita vectorizare a
algoritmilor n fiierele MATLAB. Acolo unde alte limbaje folosesc bucle de tip for sau DO,
MATLAB-ul poate utiliza operaii matriceale sau vectoriale.
Un exemplu simplu este urmtorul:
x = 0;
for k = 1:1001
y(k) = log10(x);
x = x + .01;
end

Versiunea vectorizat a aceluiai program este


x = 0:.01:10;
y = log10(x);

Programatorii MATLAB spun uneori:


"Viaa este prea scurt pentru a i-o petrece scriind bucle!"
Atunci cnd nu se poate elimina complet folosirea unei bucle se utilizeaz procedura de
prealocare.
Funcii de funcii
n MATLAB exist o clas de funcii care lucreaz cu funcii neliniare ca argument. Funciile de
funcii includ:

Gsirea zerourilor

Optimizare

Integrare numeric

Ecuaii difereniale ordinare

MATLAB-ul reprezint funcia neliniar ca o funcie M-file care poate fi ulterior utilizat ca
argument de alte funcii MATLAB.
Exemplu:
Urmtorul fiier creeaz o funcie neliniar:
function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

Aceast funcie poate fi evaluat pentru un set de puncte n intervalul 0

1 cu programul:

x = 0:.002:1;
y = humps(x);

i apoi se poate reprezenta grafic funcia cu comanda


plot(x,y)

Graficul arat c funcia are un minim local la aproximativ x = 0.6. Dac de exemplu utilizm
funcia fmins putem gsi imediat valoarea exact a lui x . Primul argument al funciei fmins este
chiar numele funciei pentru care calculm minimul (al doilea parametru este o aproximare grosier
a localizrii minimului).
p = fmins('humps',.5)
p =
0.6370

Se poate acum evalua valoarea funciei n punctul de minim local:


humps(p)
ans =
11.2528

11

2.4.
Matrici, vectori i polinoame
Pentru a lucra uor i bine cu limbajul MATLAB trebuie n primul rnd s se nvee
manipularea matricilor. n MATLAB, o matrice este un tablou dreptunghiular de numere. Scalarii de
exemplu sunt matrici 1 x 1, iar matricile cu o singur linie sau coloan sunt de fapt vectori.
Un exemplu celebru de matrice apare n gravura renascentist Melancholia realizat de marele
artist i matematician amator Albrecht Drer. Gravura este ncrcat de simbolism matematic i la o
atent observare a acesteia se poate distinge n colul din dreapta sus o matrice.
Matricea respectiv este cunoscut sub numele de ptrat magic i n timpul lui Drer se
considera c are proprieti magice.

12

Introducerea matricilor
Matricile se pot introduce n mai multe moduri.

Introducerea unei liste explicite cu elementele matricei.

ncrcarea unor date din fiere externe de date.

Generarea de matrici utiliznd funcii built-in.

Crearea de matrici n fiierele M-files.

Vom introduce matricea lui Drer mai nti ca o list de elemente.


Trebuie respectate cteva convenii simple:

Elementele unei linii sunt separate prin virgule sau spaii.

Sfritul unei linii se marcheaz cu punct i virgul.

Lista de elemente care formeaz matricea se delimiteaz cu paranteze drepte:


[ ]

Pentru introducerea matricii lui Drer tastm:


A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

MATLAB-ul va afia matricea:


A =

16
5
9
4

3
10
6
15

2
11
7
14

13
8
12
1

O dat introdus, matricea este memorat n workspace i poate fi apelat simplu, ca A.


S vedem acum: de ce este magic?
sum, transpose, diag
Caracterul magic deriv din faptul c prin efectuarea unor operaii asupra elementelor matrici
rezult numere interesante i surprinztoare.
Dac de exemplu nsumm elementele pe orice linie sau coloan sau de pe cele dou diagonale,
vom obine acelai numr.
S verificm acest lucru cu MATLAB-ul. Suma elementelor de pe cele 4 coloane se calculeaz
rapid cu:
sum(A)
ans =
34

34

34

34

Pentru calcularea sumelor pe linii, efectum nti transpunerea matricii i apoi aplic din nou
comanda sum.
Transpusa se calculeaz cu:
A'
ans =
16
3
2
13

i apoi

5
10
11
8

9
6
7
12

4
15
14
1

sum(A')'
ans =
34

13

34
34
34

Suma elementelor de pe diagonal se calculeaz cu tot cu funcia sum, dar dup ce n prealabil
vom sorta cu funcia diag elementele de pe diagonala principal:
diag(A)
ans =
16
10
7
1
sum(diag(A))
ans =
34

Un anume element al matricii, de exemplu elementul din linia i coloana j se noteaz A(i,j).
Prin urmare o alt cale (mai puin rapid) de a calcula suma de pe patra coloan de exemplu
este urmtoarea:
A(1,4) + A(2,4) + A(3,4) + A(4,4)
ans =
34

Dac specificm un element care nu exist n matrice, primim un mesaj de eroare:


t = A(4,5)
Index exceeds matrix dimensions.

Operatorul :
Operatorul : este foarte important. De exemplu, expresia
1:10
este un vector linie
ans =

79

72

10

Alte exemple:
100:-7:50
ans =
100
0:pi/4:pi
ans =
0

93

0.7854

86

1.5708

2.3562

65

58

51

3.1416

Expresia
A(1:k,j)

Se refer la primele k elemente ale coloanei j a lui A.


Dac este utilizat n paranteze operatorul : atunci nseamn c ne referim la toate elementele
unei linii sau coloane
sum(A(:,3))

calculeaz suma elementelor din coloana a treia a lui A:


ans =

34

O alt proprietate interesant a ptratului magic este c suma magic 34 este obinut i prin
nsumarea elementelor matricii i prin mprirea la dimensiunea matricii (4):
sum(1:16)/4
ans =
34

14

Observaie: suma magic pentru orice ptrat magic n x n este (n3 + n)/2 (se poate calcula cu
ajutorul Symbolic Math Toolbox).
Funcia magic
MATLAB-ul are o funcie built-in care creeaz ptrate magice de orice dimensiune (funcie pe
care deja am utilizat-o):
B = magic(4)
B =
16
2
5
11
9
7
4
14

3
10
6
15

13
8
12
1

Aceast matrice este aproape identic cu matricea lui Drer singura diferen fiind c cele dou
coloane din mijloc sunt schimbate ntre ele. Pentru obinerea din B a matricii lui Drer se poate
utiliza urmtoarea comand MATLAB:
A = B(:,[1 3 2 4])
A =
16
3
2
5
10
11
9
6
7
4
15
14

13
8
12
1

Polinoame
Polinoamele sunt descrise n MATLAB prin vectori linie ale cror elemente sunt de fapt
coeficienii polinoamelor n ordinea descresctoare a puterilor.
Exemplu: polinomul p(x)=x3+5x+6 este reprezentat n MATLAB astfel:
p = [1 0 5 6]

Un polinom poate fi evaluat pentru o valoare a lui x cu ajutorul funciei polyval:


polyval(p,1)
ans=
12

n exemplul de mai sus este evaluat polinomul p n punctul x =1.


Se pot afla cu uurin rdcinile polinomului folosind funcia roots:
r=roots(p)
r =
0.5000 + 2.3979i
0.5000 - 2.3979i
-1.0000

Exist numeroase alte funcii i comenzi care se ocup cu operaii asupra polinoamelor,
funcii care vor fi abordate ntr-un capitol special. Dintre acestea amintim comanda care
permite nmulirea a dou polinoame, i anume conv:
p1=[1 3 5]
p1 =
1
3

p2=[2 0 1 0 5]
p2 =
2
0
1

p3=conv(p1,p2)
p3 =
2
6
11

10

15

15

25

2.5.

Operaiuni elementare cu matrici i funcii

MATLAB-ul opereaz cu matricile cu aceeai uurin cu care lucreaz cu scalarii. Pentru


adunarea a dou matrici de exemplu se folosete pur i simplu semnul + ca la o adunare obinuit.
Bineneles c matricile trebuie s aib aceleai dimensiuni pentru a putea fi adunate.
Exemplu:
A=[2 3;15 -3]
A =
2
3
15
-3
B=[11 -21; 12 4]
B =
11
-21
12
4
C=A+B
C =
13
-18
27

Pentru nmulirea a dou matrici se folosete operatorul * , valabil de altfel i pentru operaiile
cu scalari. Exemplu:
D=A*B
D =
58
129

-30
-327

Dac dimensiunile matricilor care se nmulesc nu sunt corespunztoare, atunci va fi furnizat un


mesaj de eroare:
E=[1 23; -12 2;1 2]
E =
1
23
-12
2
1
2
F=A*E
??? Error using ==> *
Inner matrix dimensions must agree.

Pentru depanarea programului n cazul unor astfel de greeli se poate utiliza comanda size
care ne d informaii despre dimensiunile matricilor respective i permite corectarea erorilor:
size(A)
ans =
2
size(E)
ans =
3

2
2

MATLAB-ul include multe alte funcii care opereaz cu matrici i care vor fi descrise i
utilizate intensiv n capitolele urmtoare. Amintim aici cteva: det, inv, rank, eig etc.
O facilitate interesant a MATLAB-ului este aceea c lucreaz cu matricile cu operatori logici
i relaionali ntr-un mod asemntor acestor operaii efectuate cu scalari.
De exemplu, pentru operaiunea scalar
r=17>55
r =
0

MATLAB-ul rspunde cu r = 0, adic fals. Dac dorim de exemplu s comparm fiecare element al
matricii A cu elementul corespunztor din matricea B, procedm asemntor:
16

L=A<=B
L =
1
0

Operatorii logici, adic & pentru I (AND), | pentru SAU (OR), ~ pentru NU (NOT), vor
returna valoarea 1 pentru ADEVRAT i 0 pentru FALS. Exemplu:
A&B
ans =
1
1

1
1

~A
ans =
0
0

0
0

3. MEDIUL DE LUCRU MATLAB


MATLAB este, dup cum s-a afirmat deja, att un limbaj ct i un mediu de programare. Ca
mediu de lucru, MATLAB include faciliti pentru manipularea variabilelor n spaiul de lucru,
pentru importul i exportul datelor, precum i instrumente pentru dezvoltarea i manipularea
fiierelor (M-files) i a aplicaiilor MATLAB.
Mediul de programare este utilizat n mod diferit n funcie de platforma pe care ruleaz
MATLAB-ul (este vorba de sistemul de operare care poate fi de tip Windows sau Unix).
3.1.

Startul i terminarea sesiunilor de lucru

Pe platformele de tip Windows, programul de instalare creeaz un shortcut la programul


executabil, shortcut care poate fi plasat pe desktop (pe display-ul de lucru al calculatorului).
Prin efectuarea unui dublu click pe icon-ul care reprezint acest shortcut se starteaz
MATLAB-ul.
Pentru startarea MATLAB-ului pe un sistem UNIX trebuie tastat matlab la prompterul
sistemului de operare.
Fiiere de pornire (Startup Files)
La pornire, MATLAB-ul execut automat fiierul master matlabrc.m i, dac exist, fiierul
startup.m.
Fiierul matlabrc.m este rezervat pentru administratorul de sistem (reea), n timp ce
fiierul startup.m este destinat utilizatorilor. De aici se pot seta cile de acces, se pot defini
setrile implicite pentru instrumentele Handle Graphics i se pot predefini variabile n spaiul de
lucru.
De exemplu, dac n startup.m se introduce linia
addpath /home/me/mytools
se adaug un director de instrumente proprii pentru calea implicit de cutare.
Pe platformele Windows, fiierul startup.m se plaseaz n directorul local din directorul
toolbox.
Opiuni de pornire
Se pot specifica opiuni de pornire, aceste opiuni fiind adugate pe calea shortcut-ului
MATLAB.
n continuare sunt prezentate cteva posibile opiuni.

17

Opiunea de
Startup
Automation
Logfile
logfilename
Minimize

Descriere
Starteaz MATLAB-ul ca un server automat, minimizat, fr splash screen.
Scrie n mod automat ieirile din MATLAB ntr-un log file specificat.
Starteaz MATLAB-ul minimizat i fr splash screen-ul MATLAB.

Nosplash

Starteaz MATLAB-ul fr afiarea splash screen-ului MATLAB.

r M_file

Ruleaz automat fiierul .m specificat imediat dup pornirea MATLAB.ului.

Regserver

Modific regitrii Windows cu intrri adecvate tip ActiveX pentru MATLAB.


Modific regitrii Windows pentru tergerea intrrilor ActiveX pentru
MATLAB. Se utilizeaz pentru resetarea regitrilor.

Unregserver

De exemplu, pentru a porni MATALB-ul i a rula imediat n mod automat un fiier cum ar fi de
exemplu rezultate.m, se poate utiliza urmtoarea cale pentru shortcut:
D:\bin\nt\matlab.exe /r rezultate

Terminarea unei sesiuni de lucru


Pentru a prsi mediul MATLAB, se tasteaz quit la prompterul MATLAB.
n cazul platformelor Windows, se poate termina sesiunea prin selectarea opiunii exit din
meniul File sau se poate utiliza butonul close vizibil n colul din dreapta sus al ferestrei de
comand MATLAB.
Comanda quit ruleaz fiierul finish.m, dac acesta exist n cile de cutare ale
MATLAB-ului. Se pot include comenzi de tipul save n acest fiier, pentru a salva automat
variabilele din spaiul de lucru la ncheierea sesiunii. O alt opiune este de a cere afiarea unei
casete de dialog pentru confirmarea terminrii sesiunii. Aceste dou tipuri de opiuni se pot gsi
n directorul /toolbox/local:
finishsav.m:

permite salvarea variabilelor curente

finishdlg.m:

afieaz o caset de dialog pentru confirmarea opririi

3.2.
Fereastra de comand (fereastra principal)
Fereastra de comand este fereastra principal prin intermediul creia se poate comunica cu
MATLAB-ul.
Pe platformele Windows, MATLAB-ul furnizeaz o fereastr special, cu faciliti de tip
Windows.
Pe sistemele UNIX, fereastra de comand este fereastra terminal din care este lansat
MATLAB-ul.
Interpreterul MATLAB afieaz un prompter (>>) indicnd faptul c este gata s accepte
comenzile utilizatorului. De exemplu, pentru introducerea unei matrici 3 x 3 se poate tasta:
A = [1 2 3; 4 5 6; 7 8 10]

i la apsarea tastelor Enter sau Return, MATLAB-ul rspunde cu:


A =

1
4
7

2
5
8

3
6
10

18

3.2.1. Editarea liniilor de comand n fereastra principal


Tastele de tip sgeat i tasta Ctrl permit apelarea, editarea i eventual reutilizarea comenzilor
editate anterior. De exemplu:
rho = (1+ sqt(5))/2
Undefined function or variable 'sqt'.

Pentru eliminarea greelii de editare a numelui funciei radical (sqrt) nu se mai editeaz din nou
toat linia, ci se folosete tasta
, apare din nou linia de comand greit i apoi cu tasta
se
deplaseaz cursorul pe linie i se repar greeala.
Lista complet a sgeilor i tastelor care permit controlul asupra operaiunilor cu linia de
comand este prezentat n tabelul urmtor:
Arrow Key

ctrlctrlhome
end
esc
del
backspace

Control Key
Ctrl-p

Operation
Recall previous line.

Ctrl-n

Recall next line.

Ctrl-b

Move back one character.

Ctrl-f

Move forward one character.

Ctrl-r

Move right one word.

Ctrl-l

Move left one word.

Ctrl-a
Ctrl-e
Ctrl-u
Ctrl-d
Ctrl-h
Ctrl-k

Move to beginning of line.


Move to end of line.
Clear line.
Delete character at cursor.
Delete character before cursor.
Delete (kill) to end of line.

tergerea ferestrei de comand


Pentru tergerea coninutului (afiajul) ferestrei principale se poate folosi comanda clc, care
ns nu are ca efect tergerea variabilelor curente din spaiul de lucru.
Controlul afirii paginilor ecran n fereastra de comand
Pentru a controla afiarea paginilor n fereastra de comand se utilizeaz comanda more.
Setarea implicit este more off. Atunci cnd setm more on, o pagin ecran este afiat. Apoi se
poate utiliza:
Return
Space Bar
q

To advance to the next line


To advance to the next page
To stop displaying the output

ntreruperea unui program care ruleaz


Se poate ntrerupe un program care ruleaz prin apsarea pe tastele Ctrl-c.
Pe sistemele Windows se va atepta terminarea execuiei funciilor de tip built-in sau a
fiierelor de tip MEX-file.
Pe sistemele UNIX, execuia programului se va ncheia imediat.

19

Comanda format
Comanda format controleaz formatul numeric al valorilor afiate pe ecran i a fost deja
discutat ntr-un paragraf anterior. Comanda are efect asupra afirii numerelor, i nu asupra
modului intern de reprezentare a acestora.
Pe sistemele Windows, se poate schimba setarea implicit a formatului prin selectarea meniului
Preferences din meniul File i selectarea formatului dorit din General.
Suprimarea afirii rezultatelor unei linii comand
Deoarece la apsarea tastelor Return sau Enter MATLAB-ul afieaz automat rezultatele pe
ecran, dac ncheiem linia de comand cu punct i virgul, va fi realizat calculul, dar nu va mai fi
afiat. Aceast facilitate este important atunci cnd avem de lucrat cu matrici mari sau cu multe
date. Exemplu:
A = magic(100);

Linii de comand lungi


Dac o declaraie nu ncape ntr-o linie de comand, se pot utiliza trei puncte urmate de Return
sau Enter pentru a indica faptul c expresia continu pe linia urmtoare. Exemplu:
s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...
- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

Spaiile albe din jurul semnelor =, +, - sunt opionale i pot mbunti citirea liniilor.
Maximul numrului de caractere pe o singur linie este de 4096.
3.2.2. Descrierea ferestrei de comand
Fereastra de comand permite rularea comenzilor MATLAB, lansarea unor instrumente cum ar
fi Editor/Debugger i permite startarea toolbox-urilor.

Toolbar (bara de instrumente)


Toolbar-ul din fereastra de comand permite accesul la operaii simple:

20

Meniuri
Meniurile fereastrei de comand furnizeaz accesul la operaii care nu sunt accesibile din
toolbar.

Preferine
Sunt utilizate pentru controlarea operaiilor i a modului de prezentare din fereastra de comand.
Pentru aceasta se selecteaz Preferences din meniul File, iar dup apariia casetei de dialog
Preferences se pot seta preferinele pentru General, Command Window Font i Copying
Options.

21

General Preferences:

Numeric Format Specific formatul numeric implicit.

Editor Preference Permite folosirea editorului MATLAB sau specificarea altui editor.

Help Directory Specific directorul n care se afl fiierele de tip help.

Echo On Seteaz facilitatea de afiare a liniilor program n timp ce un program MATLAB


este rulat.

Show Toolbar Arat sau ascunde toolbar-ul.

Enable Graphical Debugging Permite depanarea (Debugger) n mod automat la fiecare


breakpoint.

Command Window Font:


Specific caracteristicile fontului pentru textul afiat n fereastra de comand.
Copying Options:
Specific opiunile utilizate la copierea unor obiecte din MATLAB n clipboard pentru rescrierea n
alte aplicaii.
3.2.3.

Spaiul de lucru al MATLAB-ului (workspace)

Spaiul de lucru conine un set de variabie (numite tablouri sau matrice) care pot fi manevrate
din linia de comand. Se pot folosi comenzile who i whos (deja prezentate) pentru a vedea care
sunt variabilele curente din workspace. Pentru tergerea variabilelor din workspace se utilizeaz
comanda clear.
ncrcarea i salvarea din workspace
Comenzile save i load descrise ntr-un subcapitol anterior au rolul de a salva variabilele din
spaiul de lucru i respectiv de a le rencrca ntr-o sesiune ulterioar. Aceste comenzi se pot folosi
i pentru a importa i exporta date.
Pe platformele Windows, operaiile save, load sunt disponibile i prin selectarea
opiunilor Save Workspace As, respectiv Load Workspace din meniul File.
Citirea sau scrierea unor fiiere .mat din programe externe n C sau Fortran se poate face cu
Interfaa de Aplicaii Program (API).
Formatul n care comanda save stocheaz datele poate fi controlat prin adugarea unor flag-uri
n lista de nume de fiiere sau variabile:
-mat

Utilizeaz formatul binar tip .MAT (implicit).

-ascii

Utilizeaz formatul ASCII pe 8 digii.

-ascii -double

Utilizeaz formatul ASCII pe 16 digii.

-ascii -double tabs

Delimiteaz elementele tablourilor cu tab-uri.

-v4

Salveaz ntr-un format pe care versiunea 4 MATLAB l


poate deschide.

-append

Adaug datele ntr-un fiier .MAT existent.

22

Observaie: atunci cnd se salveaz coninutul spaiului de lucru n format ASCII trebuie salvat
cte o variabil pentru a permite reconstituirea ulterioar a acesteia.
ncrcarea unor fiiere cu date ASCII
Comanda load permite importul de fiiere de date ASCII. Exemplu:
load diverse.dat

creeaz o variabil cu numele diverse n workspace. Dac datele ASCII au m linii cu n valori pe
fiecare linie, rezultatul va fi o matrice numeric m x n.
Nume de fiiere ca iruri de caractere
Dac numele fiierelor sau variabilelor cu care se lucreaz sunt stocate n variabile de tip ir de
caractere, se poate folosi dualitatea comand/funcie pentru a apela load i save ca funcii. De
exemplu
save('myfile','VAR1','VAR2')
A = 'myfile';
load(A)

au acelai efect ca
save myfile VAR1 VAR2
load myfile

Pentru ncrcarea sau salvarea mai multor fiiere cu acelai prefix i cu sufixe numere ntregi
succesive se poate utiliza o bucl. Exemplu:
file = 'data';
for i = 1:10
j = i.^2;
save([file int2str(i)],'j');
end

Wildcards
Comenzile load i save permit specificarea unui caracter special de tip wildcard (*).
Exemplu:
save rundata x*

salveaz toate variabilele din workspace care ncep cu x n fiierul rundata.mat.


Browser-ul Workspace
Browser-ul Workspace permite vizualizarea coninutului spaiului de lucru curent (este de fapt
varianta grafic a comenzii whos). Pentru a deschide acest instrument, se selecteaz Show
Workspace din meniul File i apoi se face click din mouse pe tasta Workspace Browser din
toolbar.

23

3.2.4.
Ci de cutare
MATLAB-ul utilizeaz o cale de cutare (search path) pentru a gsi fiierele .m . Aceste fiiere
sunt organizate n directoare, din care unele sunt furnizate de MATLAB i altele sunt disponibile
separat ca toolbox-uri.
Dac de exemplu tastm numele fis la prompterul MATLAB, interpreterul MATLAB va face
urmtoarea cutare:
1. Caut pe fis ca pe o variabil.
2. Verific dac fis este o funcie tip buit-in.
3. Caut n directorul curent fiierul numit fis.m.
4. Caut n directoarele aflate n calea de cutare fiierul fis.m.
Schimbarea cii de cutare
Calea de cutare poate fi afiat sau schimbat folosind funciile path, addpath, rmpath:
determin rentoarcerea la calea curent.

Path

path(s),

addpath /home/lib i path(path,'/home/lib')

unde s este un ir de caractere, seteaz calea la s.


adaug noi directoare la calea de

cutare.

rmpath /home/lib

terge calea /home/lib.

Calea de cutare implicit este definit n fiierul pathdef.m n directorul local.


Fiiere pe calea de cutare
Pentru a afia calea de cutare se poate folosi path. Dac dorim s vedem ce fiiere MATLAB
sunt ntr-un director se utilizeaz comanda what. Exemplu:
what matlab/elfun
Pentru a vedea coninutul unui fiier se folosete comanda type (deja descris ntr-un paragraf
anterior). Exemplu:
type rank
Pentru editarea unui fiier M-file se poate utiliza edit. Exemplu:
edit rank
Path Browser
MATLAB-ul furnizeaz i un browser al cii de cutare (Path Browser) cu o interfa grafic
pentru vizualizarea i schimbarea cii de cutare. Pentru startarea acestui browser se utilizeaz
pathtool, sau se selecteaz Set Path din meniul File, sau se face click pe butonul Path Browser
din toolbar.

24

Meniurile din Path Browser pot fi folosite pentru:

Adugarea unui director pe calea de cutare.

tergerea (ndeprtarea) unui director din cale.

Salvarea setrilor n fiierul pathdef.m.

Restabilirea setrilor implicite.

Directorul curent
MATLAB-ul menine un director curent pentru lucrul cu fiiere de tip .m i .mat.
Pe platformele Windows, directorul curent iniial este specificat n shortcut-ul utilizat pentru
pornirea MATLAB-ului.
Pentru schimbarea setrilor implicite se poate face click cu butonul din dreapta al mouse-ului i
se selecteaz meniul Properties.
Deschiderea fiierelor n MATLAB
Se pot deschide fiiere n funcie de extensiile lor prin folosirea funciei open, care este o
funcie extensibil de ctre utilizator. Se pot include i alte tipuri de fiiere n afara fiierelor
MATLAB standard:
Nume

Aciune

Figure file (*.fig)

Deschide o figur ntr-o fereastr tip figur.

M-file (name.m)

Deschide fiierul name de tip .m n Editor.

Model (name.mdl)

Deschide modelul name n Simulink.

P-file (name.p)

Deschide fiierul corespunztor name.m, dac exist, n Editor.


25

Variable
Alte extensii
(name.custom)

Deschide tabloul name n Array Editor (tabloul trebuie s fie


numeric); open apeleaz openvar.
Deschide
name.custom
prin
apelarea
funciei
helper
opencustom, unde opencustom este o funcie definit de
utilizator.

3.3.
Fereastra grafic (figure)

MATLAB-ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de


comand. Aceast fereastr grafic este denumit figur (figure).

Funciile grafice creeaz n mod automat o nou fereastr grafic dac nu exist una
curent. Dac exist o astfel de fereastr, MATLAB-ul o va utiliza.

Dac exist mai multe ferestre de tip figur, atunci una dintre ele este asignat ca fiind
fereastra curent (n general este ultima fereastr figur utilizat).
Funcia figure genereaz ferestre grafice. De exemplu,
figure

genereaz o nou fereastr i o face fereastra curent.


O funcie grafic, cum ar fi funcia plot, genereaz un grafic n fereastra de tip figur. De
exemplu,
t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)

traseaz graficul funciei sinus de la 0 la 2


iar dac nu ntr-una nou creat.

n fereastra curent de tip figur, dac aceasta exist,

Prelucrarea graficelor cu Plot Editor


Dup generarea unui grafic (plot), se pot face schimbri i prelucrri ale graficului cu interfaa
grafic Plot Editor. Figura urmtoare ilustreaz principalele faciliti ale ferestrei grafice i ale
interfeei Plot Editor.

26

Pentru salvarea unei figuri se selecteaz Save din meniul File. Pentru salvarea ntr-un format
diferit, cum ar fi TIFF, necesar utilizrii n alte aplicaii se selecteaz Export din meniul File.
3.4.
Importul i exportul de date
Sunt multe posibiliti de a realiza importul i exportul de date ntre MATLAB i alte aplicaii.
n majoritatea cazurilor se pot utiliza facilitile MATLAB de a citi sau scrie fiiere (pentru aplicaii
complicate trebuie scrise programe n C sau Fortran).
Importul de date
n tabelul urmtor sunt prezentate cteva metode de import date:
Metoda

Cnd trebuie utilizat metoda. Mod de utilizare

Introducerea unei
liste explicite de
elemente
Crearea de date ntrun fiier .m

Atunci cnd cantitatea de date este mic. Se tasteaz pur i simplu datele
utiliznd parantezele drepte ([ ]).

ncrcarea datelor
dintr-un fiier ASCII

Fiierele ASCII stocheaz datele pe linii cu un numr egal de elemente


spaiate prin blanc-uri, linii ncheiate cu Enter. Aceste fiiere se pot edita
cu un editor de texte obinuit. Datele sunt introduse n MATLAB cu
funcia load. Se poate utiliza dlmread dac este necesar specificarea
altor delimitatori.

Se utilizeaz un editor de text pentru generarea unui fiier .m.


Metoda este util atunci cnd datele nu sunt deja n form digital. Este
ntr-un fel similar cu prima metod.

Citirea datelor cu
Metoda este folosit cnd se ncarc date de la alte aplicaii, date care au
fopen, fread i cu propriul lor format.
funciile de
intrare/ieire
Dlmread
Funcii specializate
Citete fiiere de date ASCII.
de citire a fiierelor
Textread
Citete date de tip caracter sau numerice dintr-un fiier i
le convertete n variabile MATLAB.
Wk1read
Citete fiiere de tip (WK1) (tip foaie de lucru)
Imread
Citete din fiiere grafice.
Auread
Citete fiiere de sunet tip (.au).
Wavread
Crearea de fiiere tip
MEX pentru citirea
datelor
Dezvoltarea unor
programe n Fortran
sau C

Citete fiiere de sunet Microsoft WAVE (.wav).

Este metoda potrivit dac sunt deja disponibile rutine C sau Fortran
pentru citirea datelor din alte aplicaii.
Se utilizeaz n cazuri complexe pentru translatarea unor date n format
.mat i apoi ncrcarea cu comanda load.

Exportul datelor
n tabelul urmtor sunt prezentate cteva metode de export date:
Metoda

Cnd trebuie utilizat metoda. Mod de utilizare

27

Folosirea comenzii Pentru tablouri de date de mic dimensiune se folosete comanda diary
diary
pentru crearea unui fiier de tip jurnal i afiarea variabilelor. Ieirea diary
include comenzile MATLAB folosite ntr-o sesiune de lucru.
Salvarea datelor n Se utilizeaz comanda save cu opiunea -ascii. Se poate folosi
format ASCII
dlmwrite dac este necesar specificarea altor delimitatori.
Scrierea datelor n Se folosesc fwrite i alte funcii I/O de nivel sczut. Este util la scrierea
formate speciale
datelor n formate cerute de alte aplicaii.
Funcii specializate Dlmwrite Scrie fiiere n format ASCII.
de scriere a
wk1write Scrie fiiere tip (WK1).
fiierelor
Imwrite
Scrie imagini pentru fiiere grafice.
Auwrite
Scrie fiiere de sunet tip (.au).
Wavwrite Scrie fiiere de sunet tip Microsoft WAVE (.wav).
Crearea unor fiiere Este metoda potrivit dac sunt deja disponibile rutine C sau Fortran pentru
tip MEX pentru
scrierea datelor n formate cerute de alte aplicaii.
scrierea datelor
Scrierea datelor n
fiiere tip .MAT

Se folosete comanda save i apoi se scrie un program n Fortran sau C


pentru translatarea fiierului .mat n formatul dorit.

Fiiere de tip text cu delimitatori


Funciile dlmread i dlmwrite amintite mai sus permit citirea i scrierea unor valori
separate prin delimitatori nt-un fiier de date ASCII. Un delimitator este orice caracter care separ
valorile.
Exemplu: considerm un fiier fiz.dat ale crui componente sunt separate prin punct i
virgul:
7.2;8.5;6.2;6.6
5.4;9.2;8.1;7.2

Citirea i transcrierea componentelor ntr-un tablou (matrice) A se face astfel:


A = dlmread('fiz.dat', ';');

n mod similar se folosete dlmwrite pentru scrierea unui text cu delimitatori ntr-un fiier
extern:
A =

1
4

2
5

3
6

dlmwrite('myfile',A,';')

myfile va conine:
1;2;3
4;5;6

Citirea fiierelor cu format uniform


Funcia textread citete date de tip caracter sau numerice dintr-un fiier i le transcrie n
variabile MATLAB folosind specificatorii de conversie care definesc lungimea cmpului de date i
formatul acestora. Funcia textread este util pentru fiiere cu format uniform i cunoscut (de
exemplu cu delimitatori de tip virgul sau tab).
Exemplu: fie fiierul mydata.dat :
Sally

Type1 12.34 45 Yes

28

Pentru citirea fiierului mydata.dat ca fiier cu format liber se folosete formatul de conversie
%:
[names,types,x,y,answer]=textread('mydata.dat','%s %s %f %d %s',1)

unde %s citete un ir de caractere separat prin spaii albe, %f citete o valoare tip floating point, i
%d citete un ntreg cu semn.
MATLAB va rspunde:
names =
'Sally'
types =
'Type1'
x =
12.34000000000000
y =
45
answer =
'Yes'

Schimbarea de date ntre platforme (sisteme de operare)


n unele situaii este necesar transferul de date i programe ntre utilizatori care lucreaz cu
sisteme de operare diferite. Aplicaiile MATLAB constau n fiiere .m cu funcii i script-uri i
fiiere tip .mat cu date binare. Ambele tipuri de fiiere pot fi transportate direct ntre diferite
computere:

Fiierele .m conin text simplu i sunt independente de main.

Fiierele .mat sunt binare i dependente de main dar pot fi transportate ntre computere
deoarece conin semntura de main n antetul fiierului.

Pentru utilizarea i transportul aplicaiilor MATLAB pe diverse computere (sisteme de operare)


trebuie s ne asigurm c fiierele .mat se transmit n binary file mode i fiierele .m n ASCII file
mode.
Comanda diary

Comanda diary genereaz o copie a sesiunii de lucru MATLAB ntr-un fiier disc
(fr grafice). Se poate vizauliza i edita textul rezultat cu orice procesor de texte.

De exemplu, pentru crearea unui fiier cu numele octomb26.out care conine


comenzile i ieirile (rspunsurile) MATLAB corespunztoare, trebuie tastat:
diary octomb26.out

Pentru oprirea nregistrrii sesiunii se folosete:


diary off

3.5.

Utilizarea memoriei

MATLAB-ul necesit o zon continu de memorie pentru stocarea datelor din fiecare
matrice.

De asemenea, imaginile i filmele (animaia) cer o mare cantitate de memorie.

n plus, harta de pixeli (pixmap) folosit pentru imagini cere o cantitate de memorie
proporional cu suprafaa imaginii de pe ecran. O imagine color de 500x500 pixeli cere 1 Mb
de memorie. Pentru limitarea memoriei necesare trebuie limitat dimensiunea imaginilor de pe
ecran.

29

Rezolvarea erorilor de memorie


Dac nu exist memorie suficient, n cazul unor matrici de dimensiuni mari este posibil
apariia unei erori de memorie de tip out of memory. Se poate ncerca o defragmentare a
memoriei cu comanda pack.
Dac astfel de erori out of memory sunt dese se pot ncerca i alte metode:
n cazul sistemelor Windows se crete memoria virtual folosind System Properties pentru
Performance, instrument accesibil din Control Panel.
Pentru sisteme UNIX trebuie cerut administratorului de sistem s creasc spaiul swap.
Administrarea memoriei MATLAB

MATLAB-ul utilizeaz funciile C standard malloc i free pentru alocarea memoriei


dinamice. Aceste rutine menin de regul o rat relativ lent de utilizare a memoriei alocat de
sistemul de operare. Pentru MATLAB, malloc i free aloc memoria ntr-un ritm mai rapid.
Pe msur ce MATLAB-ul nu mai are nevoie de memorie, malloc i free nu returneaz
memoria adiional sistemului de operare (rutinele presupun c dac a fost nevoie de o cantitate
mare de memorie o dat, atunci este posibil s mai fie nevoie nc o dat).

Din acest motiv este posibil ca alte aplicaii care ruleaz s nu poat dispune de
memorie, chiar dac MATLAB-ul nu mai are nevoie. Pentru a diponibiliza cantitatea de
memorie trebuie terminat sesiunea MATLAB.
4. EDITORUL/DEBUGGER-UL I PROFILER-UL MATLAB
4.1. Editorul/Debugger-ul MATLAB
MATLAB-ul dispune de un editor propriu, editor care este asociat i cu un program de
depanare (debugger). Editorul/debugger-ul ofer posibilitatea de a efectua operaiunile de editare de
baz precum i accesul la instrumente de depanare a fiierelor .m .
Pachetul Editor/Debugger ofer i o interfa grafic uor de utilizat. Pentru lansarea editorului
se tasteaz la prompterul MATLAB comanda edit. Se pot folosi i butoanele/meniurile accesibile
din fereastra de comand.

30

Setarea implicit a Editorului


Facilitile de editare i depanare sunt setate s fie active n mod implicit atunci cnd
MATLAB-ul este instalat.
Dac se dorete instalarea altui editor sau nu se dorete apelarea la depanarea n regim grafic se
pot dezactiva aceste faciliti prin setarea corespunztoare. De exemplu (n UNIX) se modific
~home/.Xdefaults file:
matlab*builtInEditor: Off
matlab*graphicalDebugger: Off
Trebuie rulat
xrdb -merge ~home/.Xdefaults
nainte de pornirea MATLAB-ului.
Debugger-ul MATLAB. Exemple de depanare a fiierelor MATLAB
Debugger-ul permite identificarea erorilor de programare. Prin folosirea debugger-ului se
poate vizualiza coninutul workspace-ului n orice moment n timpul execuiei unei funcii i se
poate executa programul (codul) MATLAB linie cu linie.
Pentru folosirea acestui instrument de depanare se poate utiliza interfaa grafic a debuggerului sau se pot folosi linii de comand.
Depanarea permite corectarea a dou tipuri de erori:
Erori de sintax, cum ar fi scrierea incorect a numelui unei funcii sau omiterea unor
paranteze. MATLAB-ul detecteaz majoritatea acestor erori i afieaz un mesaj de eroare
care descrie natura erorii i numrul liniei din programul .m n care a aprut eroarea
respectiv.
Erori de rulare (de calcul), care sunt mai mult de natur algoritmic. De exemplu este posibil
s modificm o alt variabil dect trebuie sau s efectum un calcul incorect. Aceste erori
sunt observate atunci cnd fiierul rulat furnizeaz rezultate necorespunztoare.
n timp ce erorile de sintax se corecteaz realtiv uor pe baza mesajelor de eroare, erorile de
rulare sunt mai greu de depanat. Se pot utiliza n acest caz mai multe tehnici de depanare:

Se ndeprteaz delimitatorii de tip punct i virgul de la sfritul liniilor program. Astfel la


rularea programului vor fi afiate i rezultatele intermediare corespunztoare fiecrei linii.
Se adaug comanda keyboard n fiierele .m care sunt depanate. Aceast comand oprete
execuia programului respectiv, d controlul la tastatur i d posibilitatea examinrii i
schimbrii unor funcii sau variabile. Acest mod de lucru este indicat printr-un prompter
special: "K>>." Pentru a continua execuia, se tasteaz return i se apas apoi tasta
Return.
Se folosete Debugger-ul MATLAB.
Debugger-ul este util deoarece permite accesul la funciile din workspace, examinarea i
eventual modificarea coninutului acestora.
Debugger-ul permite setarea sau tergerea unor puncte de oprire: breakpoints, care sunt linii
speciale n programul MATLAB la ntlnirea crora execuia se oprete i sunt posibile operaii de
schimbare i de execuie a liniilor de comand una cte una.
Exemplu de depanare
Pentru a ilustra procedurile de depanare disponibile (ndeosebi pentru cazul erorilor de rulare)
vom folosi un exemplu preluat din MATLAB User Guide. Vom scrie un fiier denumit
variance.m care este o funcie avnd ca intrare un vector i ca ieire un scalar. Fiierul apeleaz
la o alt funcie, numit sqsum, care calculeaz o sum medie ptratic a vectorului de intrare.
function y = variance(x)
mu = sum(x)/length(x);

31

tot = sqsum(x,mu);
y = tot/(length(x)-1);

n fiierul sqsum.m se strecoar intenionat o eroare.


function tot = sqsum(x,mu)
tot = 0;
for i = 1:length(mu)
tot = tot + ((x(i)-mu).^2);
end

Pentru verificarea corectitudinii calculelor, folosim funcia MATLAB std (calculeaz deviaia
standard) care permite efectuarea unui calcul echivalent.
Se introduce mai nti un vector de intrare de test:
v = [1 2 3 4 5];

apoi se utilizeaz funcia std:


var1 = std(v).^2
var1 =
2.5000

ncercm funcia variance care apeleaz funcia sqsum (scris eronat):


myvar1 = variance(v)
myvar1 =
1

Rspunsul este greit. Vom ncerca cu debugger-ul s gsim i s corectm greeala.


Depanarea cu ajutorul interfeei grafice a Debugger-ului
A. Pentru startarea procedurii de depanare:
Dac fiierul .m (adic variance.m) a fost creat cu editorul MATLAB i suntem n
fereastra Editor/Debugger, se continu din acest punct.
Dac fiierul a fost creat cu un editor extern, se starteaz Editor/Debugger-ul i apoi se face
click pe butonul Open M-file din toolbar.
Toolbar-ul Editor/Debugger conine o serie butoane descrise n continuare:
Comand
Echivalent

Scop

Descriere

Seteaz/
terge
Breakpoint
terge toate
Breakpointurile

Seteaz sau terge un breakpoint pe linia pe care este Dbstop/


Dbclear
poziionat cursorul.

Toolbar

Step In
(Pas n)

terge toate breakpoint-urile care sunt setate n mod Dbclear


curent.
all
Execut linia curent a fiierului .m i dac linia este
Dbstep
o apelare la alt funcie sare (face un pas) n funcia
respectiv.

Single Step
Dbstep
(Un
singur Execut linia curent a fiierului .m .
pas)
Continu execuia fiierului pn la terminare sau Dbcont
Continu
pn la alt breakpoint.
Sfrit
Ieirea din starea de depanare.
dbquit
depanare
32

in

Prin apsarea butonului din dreapta al mouse-ului n fereastra editorului se poate obine un
meniu cu toate aceste opiuni.
B. Setarea Breakpoint-urilor
Punctele de oprire (breakpoint-uri) determin oprirea execuiei fiierului la linia specificat i
permit evaluarea i schimbarea variabilelor din workspace nainte de reluarea execuiei. Breakpointul este indicat printr-un semn rou de stop ( ) nainte de linia respectiv.
Pentru exemplul considerat, la nceputul depanrii nu se tie unde ar putea fi eroarea, ns un loc
logic de amplasare a unui breakpoint pentru a face verificri este n linia 4 a funciei
variance.m:
y = tot/(length(x)-1);

Pentru setarea breakpointului se poziioneaz cursorul pe linia 4 i se face click pe butonul din
toolbar sau se alege Set Breakpoint din meniul Debug.
C. Examinarea variabilelor
Pentru verificarea variabilelor, se execut mai nti funcia din fereastra de comand:
variance(v)
Atunci cnd execuia programului ajunge la breakpoint, o sgeat galben orizontal ( ) arat
urmtoarea linie care va fi executat. Dac sgeata galben este vertical ( ) atunci aceasta indic
o pauz la sfritul unui script sau a unei funcii i permite examinarea variabilelor nainte de
rentoarcerea la funcia principal.

Acum putem verifica valorile variabilelor mu i tot. Se selecteaz textul care conine
variabilele i se face click din butonul drept al mouse-ului dup care se alege din meniu Evaluate
Selection.
n fereastra de comand va fi afiat att textul selectat ct i rezultatul:
K>> mu
mu =
3
K>> tot
tot =
4

Din analiza acestor valori se observ c eroarea se afl n sqsum.


D. Schimbarea contextului spaiului de lucru
Se poate folosi meniul Stack pentru schimbarea contextului spaiului de lucru, adic pentru
ieirea din funcia variance i vizualizarea coninutului workspace-ului, prin selectarea din
meniu a opiunii Base Workspace:
33

Prin utilizarea comenzii whos sau a Browserului Workspace se vor vizualiza variabilele v i
myvar1, ca de altfel i celelalte variabile create. Pentru ntoarcerea la contextul spaiului de lucru
local al funciei variance se selecteaz Variance din meniu.
E. Executarea pas cu pas a programului i continuarea execuiei
Se terge breakpoint-ul din linia 4 din variance.m prin plasarea cursorului pe linie i
selectarea opiunii Clear Breakpoint din meniul Debug. Se continu execuia programului cu
Continue din meniul Debug.
Se deschide sqsum.m i se seteaz un breakpoint la linia 4 pentru verificarea buclei i a
calculelor. Se ruleaz din nou variance. Execuia se va opri acum la linia 4 din sqsum.

Se poate acum evalua indicele buclei i:


K>> i
i =
1

dup care prin selectarea opiunii Single Step din meniul Debug se execut linia urmtoare. Se
evalueaz variabila tot:
K>> tot
tot =

Se selecteaz din nou Single Step:


for i

= 1:length(mu)

Se observ c bucla este iterat numai pn la lungimea lui mu, care este scalar, i nu pn la
lungimea lui x, vectorul de intrare (aceasta este de fapt greeala).
O dat eroarea gsit se selecteaz Quit Debugging i se termin execuia programului. Se
terge breakpoint din sqsum i se pune un breakpoint la linia 4 din variance.m, dup care
rulm din nou:
variance(v)

34

La oprirea execuiei se seteaz valoarea lui tot la valoarea corect (10):


K>> tot = 10
tot =
10

Selectm Continue Execution i obinem rezultzatul corect.


F. Terminarea sesiunii de depanare
Se selecteaz Exit Editor/Debugger din meniul File i se termin sesiunea de depanare.
Pentru corectarea definitiv a erorii se folosete editorul i se ruleaz din nou programul pentru
o ultim verificare.
Depanarea din linia de comand
Folosirea facilitilor de depanare se poate realiza i direct din linia de comand, prin
intermediul unui set de comenzi. Aceste comenzi sunt prezentate n forma lor general n tabelul
urmtor.
Descriere
Sintax

Reluarea execuiei.

dbstop at line_num in
file_name
dbclear at line_num in
file_name
dstop if warning
error
naninf
infnan
Dbcont

Listarea apelrii de funcii.

Dbstack

Listarea tuturor breakpoint-urilor.

dbstatus file_name

Executarea a una sau mai multe linii.

dbstep nlines

Listarea fiierelor M-file cu liniile numerotate.

dbtype file_name

Setarea unui breakpoint.


tergerea unui breakpoint.
Stop la atenionare, eroare sau generarea de
NaN/Inf.

Schimbarea contextului spaiului de lucru local


(down).
Schimbarea contextului spaiului de lucru local
(up).
Prsirea modului de depanare.

dbdown
dbup
dbquit

Pentru informaii suplimentare privind utilizarea acestor funcii se poate apela la comanda
help urmat de numele comenzii respective.
Exemplul de depanare a unui fiier cu erori prezentat anterior poate fi reluat, utilizndu-se n
locul interfeei grafice a debugger-ului comenzi corespunztoare n linia de comand.
4.2. Profiler-ul MATLAB
Pentru mbuntirea performanelor fiierelor MATLAB se utilizeaz un instrument
MATLAB numit Profiler. Acest instrument furnizeaz informaii utile privitoare la timpul
alocat calculelor efectuate de fiecare linie program.

35

Cu ajutorul Profiler-ului se msoar modul n care programul consum timp, i o msur


este evident mai bun dect ghicitul rutinelor sau funciilor care consum mult timp de
calcul.
Programarea eficient presupune folosirea Profiler-ului pentru determinarea strangulrilor
din programul creat i apoi modificarea programului pentru optimizarea timpului de calcul.
Programele MATLAB au n general o structur multistrat generat de faptul c funciile
utilizate apeleaz deseori alte funcii i aa mai departe. De aceea este important s fie
identificate acele funcii consumatoare de timp i nlocuite dac este posibil.
Profiler-ul permite:
Evitarea calculelor inutile.
Schimbarea algoritmilor pentru evitarea folosirii unor funcii consumatoare de timp.
Evitarea recalculrilor prin stocarea unor rezultate ce pot fi utilizate ulterior.
Comanda profile
Pentru a crea un profil al programului (fiierului) MATLAB se folosete comanda profile
pentru a genera i vizualiza statisticile despre programul respectiv. n tabelul urmtor sunt
prezentate formele posibile ale acestei comenzi.
Sintax

Opiuni

Descriere
Starteaz profiler-ul i terge statisticile nregistrate anterior.

Profile on
-detail
level
-history
Profile
report
Basename

Specific nivelul funciei analizate.


Specific secvena exact a apelurilor fcute de funcia care va fi
nregistrat.
Suspend activitatea profilerului dup care genereaz un raport n
format HTML pe care l afieaz n browserul Web.
Salveaz raportul n fiierul basename din directorul curent.
Suspend activitatea profiler-ului dup care afieaz un grafic n
fereastra figur cu funciile care consum majoritatea timpului de
execuie.

Profile
plot
Profile
resume
Profile
clear

Restarteaz profiler-ul fr a terge statisticile nregistrate anterior.

Profile off

Termin activitatea profiler-ului.

Profile
status
stats
=
profile('in
fo')

Afieaz o structur care conine starea curent a profiler-ului.

terge statisticile nregistrate.

Suspend profiler-ul i afieaz o structur cu rezultatele activitii


de analiz.

Exemplu de utilizare a Profiler-ului


1. Se starteaz profiler-ul:

profile on -detail builtin -history

Opiunea -detail builtin determin profilerul s ntocmeasc statistici i pentru funciile


built-in.
2. Se execut un fiier .m . n exemplu este preluat programul care ruleaz modelul LotkaVolterra pentru populaii tip prdtor-prad (lotkademo pentru demo).
36

[t,y] = ode23('lotka',[0 2],[20;20]);

3. Se genereaz un raport i se salveaz rezultatele n fiierul lotkaprof.


profile report lotkaprof

4. Se restarteaz profiler-ul fr tergerea statisticilor existente.


profile resume

5. Se oprete profiler-ul.
profile off

Vizualizarea rezultatelor
A. Rapoarte
Pentru afiarea unui raport cu rezultatele statistice obinute se tasteaz
profile report
Raportul care rezult apare n fereastra browserului Web i ncepe cu un rezumat al raportului din
care se pot accesa un raport detaliat i un raport al apelrilor de funcii (o cronic).
Raportul rezumat. n figura urmtoare este prezentat raporul rezumat pentru exemplul LotkaVolterra.
Raportul detaliat. Acest raport furnizeaz detalii despre funciile de tip printe i copil ale
unei funcii. Este prezentat raportul detaliat pentru funcia lotka din exemplul considerat.
Raportul apelrilor de funcii. Acest raport afieaz secvena exact a funciilor apelate. Pentru a
vizualiza acest raport, trebuie startat profiler-ul cu opiunea -history.
profile on -history

Este prezentat un exemplu de astfel de raport.

37

B. Reprezentarea grafic a rezultatelor Profiler-ului


Pentru a obine o reprezentare grafic trebuie s tastm:
profile plot
n fereastra grafic va apare un grafic de forma din figura urmtoare:

38

5. MATRICI, ALGEBR LINIAR, POLINOAME, TEHNICI DE INTERPOLARE


5.1. Matricile n MATLAB

Prin matrice nelegem un tablou bi-dimensional de numere reale sau complexe. n


capitolul de Fundamente ale programrii n MATLAB a fost prezentat modul de introducere a
matricilor i au fost analizate cteva operaii simple cu matrici.

MATLAB-ul lucreaz direct cu multe operaii matriceale: aritmetica matricilor, ecuaii


liniare, valori proprii, factorizri etc.

Funciile de algebr liniar sunt localizate n directorul matfun. n continuare sunt


prezentate cteva din funciile care lucreaz cu matrici.
Categoria

Funcia

Descriere

Analiza matriceal

norm

Norma unei matrice sau a unui vector.

normest

Estimeaz norma-2 a matricei.

rank

Rangul matricei.

det

Determinant.

trace

Suma elementelor de pe diagonal.

null

Spaiul Nul.

orth

Ortogonalizare.

subspace

Unghiul dintre 2 subspaii.

\ i /

Utilizate la calculul soluiilor ecuaiilor liniare.

inv

Inversa matricei.
Numrul de condiie pentru inversare.

Ecuaii liniare

cond

39

chol

eig

Factorizarea Cholesky.
Factorizarea LU.
Decompoziia ortogonal-triunghiular.
Pseudoinversa.
Cele mai mici ptrate cu covarian cunoscut.
Valori proprii i vectori proprii.

svd

Decompoziia n valori singulare.

poly

Polinomul caracteristic.

hess

Forma Hessenberg.

qz

Factorizarea QZ.

schur

Decompoziia Schur.

expm
logm

Exponeniala de matrice.
Logaritmul de matrice.

sqrtm

Rdcina ptrat de matrice.

funm

Evaluarea unei funcii generale de matrice.

lu
qr
pinv
lscov

Valori proprii i
valori singulare

Funcii de matrice

Operaiunile elementare cu matrici au fost deja prezentate (adunarea matricilor, nmulirea


acestora, transpusa unei matrice, funciile sum, diag etc.).
n continuare sunt prezentate cteva matrici speciale utile n toate tipurile de
reprezentri matematice:

- Matricea identitate (unitate)


Este o matrice cu elementele de pe diagonala principal egale cu 1 iar restul elementelor sunt
nule. Notaia matematic I provine de la denumirea matricii i nu este folosit n MATLAB,
pentru evitarea unor confuzii. Se utilizeaz sintaxa:
eye(m,n)

Aceast funcie returneaz o matrice identitate mxn. Dac se folosete:


eye(n)

atunci este vorba de o matrice identitate ptratic nxn.


- Matricea ones
Este o matrice care are toate elementele egale cu 1. Forme posibile:
ones(n) este o matrice nxn cu elemente de 1
ones(m,n) sau ones([m,n]) sunt matrici mxn cu elemente de 1.
ones(size(A)) are aceeai dimensiune cu o matrice A i are elemente de 1
- Matricea zeros
Este o matrice care are toate elementele egale cu 0. Forme posibile:
zeros(n) este o matrice nxn de zerouri
zeros(m,n) sau zeros([m,n]) sunt matrici mxn de 0
zeros(size(A))are aceeai dimensiune cu o matrice A i are elemente de 0
5.2. Rezolvarea ecuaiilor liniare

40

Una din cele mai importante probleme ale calculului din domeniul tehnic este soluionarea
sistemelor de ecuaii liniare.
Definirea problemei este pe scurt urmtoarea:
Dac se dau dou matrici A i B, exist o matrice unic X astfel nct
AX = B sau XA = B ?
MATLAB utilizeaz notaia din cazul scalar i pentru descrierea soluiei unui sistem de ecuaii
liniare. Cele dou simboluri utilizate n cazul scalar al diviziunii (mpririi) i anume slash, /, i
backslash, \, sunt folosite pentru definirea soluiei:
X = A\B este soluia ecuaiei matriceale AX = B.
X = B/A este soluia ecuaiei matriceale XA = B.
n practic, ecuaiile liniare de forma AX = B sunt mai des ntlnite.
Deoarece matricea A, care conine de fapt coeficienii sistemului, poate s nu fie ptratic ci de
tipul general mxn, exist trei cazuri posibile:
m = n.
m > n.
m < n.

Sistem ptratic. Se poate cuta o soluie exact.


Sistem supradeterminat (incompatibil). Se caut o soluie de tip cele
mai mici ptrate.
Sistem nedeterminat. Se poate cuta o soluie cu cel mult m componente
nenule.

n multe cazuri MATLAB-ul d un diagnostic (o soluie) automat prin examinarea


coeficienilor matricelor. Cteva din aceste cazuri:
Permutarea matricilor triunghiulare
Matrici simetrice, pozitiv definite
Matrici ptratice nesingulare
Sisteme rectangulare supradeterminate
Sisteme rectangulare nedeterminate
Sisteme ptratice
Cel mai simplu caz este cel corespunztor unei matrice ptratice A i a unui vector coloan b.
Soluia x = A\b are aceeai dimensiune ca b.
Dac A i B sunt ptratice de aceleai dimensiuni atunci soluia X = A\B are aceeai
dimensiune ca A sau B.
Observaie: Dac matricea A este singular (determinant nul) atunci soluia ecuaiei AX = B nu
exist sau nu este unic.
Sisteme supradeterminate (incompatibile)
Aceste tipuri de sisteme sunt des ntlnite n diverse situaii, cum ar fi de exemplu aproximarea
unor curbe din date experimentale.
Sisteme nedeterminate
Sistemele liniare nedeterminate au mai multe necunoscute dect ecuaii. Dac exist i
constrngeri (restricii) suplimentare, atunci este vorba de o problem de programare liniar.
Operatorul backslash din MATLAB permite cutarea soluiei n cazul fr restricii. Soluia nu
este niciodat unic. MATLAB-ul gsete o soluie de baz (care are cel mult m componente
nenule). Gsirea soluiei particulare se bazeaz pe factorizarea QR (decompoziia ortogonaltriunghiular).
41

Vom prezenta un exemplu (care utilizeaz funcia matriceal random rand).


R = fix(10*rand(2,4))
R =
6
8
7
3
3
5
4
1
b = fix(10*rand(2,1))
b =
1
2

Sistemul liniar Rx = b implic dou ecuaii cu 4 necunoscute. Soluia se poate afia n format
raional (coeficienii sunt numere ntregi). Soluia particular se obine astfel:
format rat
p = R\b
p =
0
5/7
0
-11/7

Soluia complet a sistemului nedeterminat se obine prin adugarea unui vector arbitrar din
spaiul nul folosind funcia null:
Z = null(R,'r')
Z =
-1/2
-7/6
-1/2
1/2
1
0
0
1

Orice vector de forma x=p+Z*q pentru q vector arbitrar satisface R*x=b.


5.3. Inverse i determinani
Dac matricea A este ptratic i nesingular, ecuaiile AX = I i XA = I au aceeai soluie X.
Aceast soluie este chiar inversa lui A, notat matematic prin A-1, i poate fi calculat cu funcia
inv.
Determinantul unei matrice se poate calcula cu funcia det (trebuie acordat atenie
problemelor de scalare i rotunjire care apar n calcule).
Exemple:
A=[1 1 1;1 2 3;1 3 6];
d = det(A)
d =
1
X = inv(A)
X =
3
-3
-3
5
1
-2

1
-2
1

Pseudoinverse
Matricile dreptunghiulare (rectangulare) nu au inverse sau determinani. Atunci cel puin una
din ecuaiile AX = I sau XA = I nu are soluie. Se poate utiliza n acest caz o pseudoinvers care
poate fi calculat cu funcia pinv:
A1=[A;[1 3 5]]
A1 =
1
1

1
2

1
3

42

1
1

3
3

6
5

X=pinv(A1)
X =
1.5000
-0.8333
0.1667

-0.0000
0.6667
-0.3333

1.0000
-2.0000
1.0000

-1.5000
2.1667
-0.8333

5.4. Funcii de matrice. Valori proprii


Puteri de matrice
Dac A este o matrice ptratic i p este un numr ntreg pozitiv, atunci A^p multiplic pe A cu
ea nsi de p ori.
X = A^2
X =
3
6
6
14
10
25

10
25
46

Dac A este ptratic i nesingular, atunci A^(-p) multiplic pe inv(A) cu ea nsi de p


ori.
Y=A^(-2)
Y =
19.0000 -26.0000
-26.0000
38.0000
10.0000 -15.0000

10.0000
-15.0000
6.0000

Ridicarea la putere element cu element se face utiliznd operatorul (funcia) .^. De exemplu:
X = A.^2
A =
1
1
1
4
1
9

1
9
36

Rdcina ptrat de matrice


Funcia sqrtm(A) permite calculul lui A^(1/2) printr-un algoritm mai precis dect
utilizarea puterii de matrice.
Exponeniala de matrice
Un sistem de ecuaii difereniale ordinare cu coeficieni constani poate fi scris:
unde x = x(t) este un vector de funcii de timp i A este o matrice independent de timp.
Soluia sistemului poate fi scris prin intermediul exponenialei de matrice
Funcia expm(A)permite calculul exponenialei de matrice.
Valori proprii
O valoare proprie i un vector propriu ale unei matrice ptratice A sunt un scalar
v care satisfac egalitatea

i un vector

Cu valorile proprii pe diagonala unei matrice de tip diagonal i cu vectorii proprii


corespunztori care formeaz coloanele unei matrice V vom avea

43

Dac V este nesingular obinem decompoziia (descompunerea) pe baza valorilor proprii:


Exemplu:
A=[-1 -3 1;2 -2 -1;0 1 -3]
A =
-1
-3
1
2
-2
-1
0
1
-3
lambda=eig(A)
lambda =
-1.7593 + 2.4847i
-1.7593 - 2.4847i
-2.4814

Lambda va fi un vector care conine valorile proprii ale matricei.


Dac funcia eig este utilizat cu dou argumente de ieire vom obine vectorii proprii i
valorile proprii (acestea sub forma diagonal):
[V,D]=eig(A)
V =

0.2233 + 0.6835i
0.6481 - 0.0862i
0.0765 - 0.2227i

0.2233 - 0.6835i
0.6481 + 0.0862i
0.0765 + 0.2227i

0.3160
0.4368
0.8422

D =
-1.7593 + 2.4847i
0
0

0
-1.7593 - 2.4847i
0

0
0
-2.4814

Observaie: Toolbox-ul Symbolic Math extinde capacitatea MATLAB-ului prin conectarea la


Maple, care este un sistem de calcul algebric performant. Una din funciile toolbox-ului permite
calculul formei canonice Jordan.
[X,J]=jordan(A)
X =
0.1121
0.4440 + 0.1691i
0.1549
-0.0775 + 0.4250i
0.2987
-0.1494 + 0.0434i
J =
-2.4814
0
0

0
-1.7593 - 2.4847i
0

0.4440 - 0.1691i
-0.0775 - 0.4250i
-0.1494 - 0.0434i
0
0
-1.7593 + 2.4847i

Forma canonic Jordan este un concept teoretic important, dar nu este indicat folosirea n
cazul matricilor mari sau pentru matricile cu elemente afectate de erori de rotunjire sau de alte
incertitudini. MATLAB-ul poate folosi n astfel de cazuri descompunerea Schur (funcia schur).
5.5. Reprezentarea polinoamelor. Interpolarea
Polinoame
MATLAB-ul furnizeaz funcii pentru operaii polinomiale standard cum ar fi calculul
rdcinilor, evaluarea polinoamelor, derivarea etc. O parte din aceste operaii precum i modul de
reprezentare a polinoamelor ca vectori au fost descrise n capitolul de Fundamente de programare.
Funciile polinomiale se afl n directorul polyfun:
Funcie
conv
deconv

Descriere
Multiplic polinoamele.
mparte polinoamele.
44

poly
polyder
polyfit
polyval
polyvalm
residue
roots

Returneaz coeficienii dac se dau


rdcinile; Polinomul caracteristic.
Calcul derivatei unui polinom.
Gsirea coeficienilor unui polinom din
aproximarea unui set de date.
Evaluarea unui polinom.
Evaluarea unui polinom cu argument
matriceal.
Descompunere n fracii simple.
Gsirea rdcinilor unui polinom.

Dup cum s-a precizat deja, MATLAB-ul reprezint polinoamele ca vectori linie care
conin coeficienii polinoamelor n ordinea descresctoare a puterilor.

Funciile uzuale care opereaz cu polinoame au fost prezentate (de exemplu roots). n
continuare sunt parcurse alte cteva exemple utile.

Funcia poly returneaz coeficienii unui polinom dac dispunem de rdcinile


acestuia (este o funcie invers fa de roots):
p=[1 -1 2 4 1];
r=roots(p)
r =
1.0529 + 1.7248i
1.0529 - 1.7248i
-0.7995
-0.3063
coef=poly(r)
coef =
1.0000
-1.0000

2.0000

4.0000

1.0000

O alt utilizare a funciei poly este aceea de calculare a coeficienilor polinomului


caracteristic al unei matrice:
A
A =

-1
-3
2
-2
0
1
poly(A)
ans =
1
6

1
-1
-3
18

23

Rdcinile acestui polinom sunt chiar valorile proprii ale matricii A.

Funcia polyval evalueaz un polinom pentru o valoare specificat a argumentului.

Funcia polyvalm permite evaluarea unui polinom n sens matriceal. n acest caz polinomul p
din exemplul anterior: p(x) = x4 x3 + 2x2 + 4x + 1 devine p(X) = X 4 X3 + 2X2 + 4X + I, unde X
este o matrice ptratic i I matricea unitate.
Exemplu:
C=polyvalm(p,A)
C =
-75
-61
81
58 -130
75
52
-23
49

45


Funciile conv i deconv implementeaz operaiile de nmulire i mprire a
polinoamelor.
Exemple:
Fie a(x) = x2 + 2x +3 i b(x) = 4x2 + 5x + 6.
a = [1 2 3]; b = [4 5 6];
c = conv(a,b)
c =
4
13
28
27
18
[q,r] = deconv(c,a)
q =
4
5
6
r =
0
0
0

Funcia polyder permite calculul derivatei unui polinom.

Exemplu:
p=[1 -1 2 4 1];
pderivat=polyder(p)
pderivat =
4
-3
4

Funcia polyfit gsete coeficienii unui polinom (o curb) care aproximeaz un set
de date n sensul algoritmului celor mai mici ptrate:
p = polyfit(x,y,n)

x i y sunt vectorii care conin setul de date iar n este ordinul polinomului ai crui coeficieni vor fi
furnizai la apelarea funciei.
Exemplu:
x = [1 2 3 4 5]; y = [5.5 43.1 128 290.7 498.4];
p = polyfit(x,y,3)
p =
-0.1917
31.5821 -60.3262
35.3400

Pentru plotarea rezultatului se utilizeaz mai nti funcia polyval pentru o trasare ct mai
exact a graficului polinomului i apoi se ploteaz estimarea versus datele reale pentru comparaii.
x2 = 1:.1:5;
y2 = polyval(p,x2);
plot(x,y,'o',x2,y2)

46


Funcia residue se utilizeaz pentru descompunerea n fracii simple.
Se aplic n cazul raportului a dou polinoame b i a,

unde r este un vector coloan, p tot un vector coloan care conine polii iar k un vector linie cu
termenii direci.
Exemplu:

b = [-4 8];
a = [1 6 8];
[r,p,k] = residue(b,a)
r =
-12
8
p =
-4
-2
k =
[]

Dac se folosesc trei argumente de intrare (r, p, i k), funcia residue asigur conversia
napoi n forma polinomial:
[b2,a2] = residue(r,p,k)
b2 =
-4
8
a2 =
1
6
8

Interpolarea
Interpolarea este un proces de estimare a valorilor dintre date (puncte) cunoscute. Aplicaiile
interpolrii sunt numeroase n domenii cum ar fi procesarea numeric a semnalelor i imaginilor.
MATLAB-ul dispune de mai multe tehnici de interpolare, alegerea unei metode sau alteia
fcndu-se n funcie de acurateea necesar, de viteza de execuie i de gradul de utilizare a
memoriei.
Funciile de interpolare se afl n directorul polyfun.

47

Funcie
griddata
interp1
interp2
interp3
interpft
spline

Descriere
Interpolare pe suprafee.
Interpolare monodimensional.
Interpolare bi-dimensional.
Interpolare tri-dimensional.
Interpolare mono utiliznd metoda FFT.
Interpolare spline (cubic).

Compararea unor metode de interpolare bi-dimensional


n continuare este preluat i prezentat (informativ) un exemplu de folosire a unor metode de
interpolare bi-dimensional pentru o matrice de date 7 x 7.
1. Generarea funciei peaks (cu rezoluie mic):
[x,y] = meshgrid(-3:1:3);
z = peaks(x,y);
surf(x,y,z)

2. Generarea unei suprafee mesh fine pentru interpolare:


[xi,yi] = meshgrid(-3:0.25:3);

3. Interpolarea cu metoda celei mai apropiate vecinti:


zi1 = interp2(x,y,z,xi,yi,'nearest');

4. Interpolarea cu metoda biliniar:


zi2 = interp2(x,y,z,xi,yi,'bilinear');

5. Interpolarea cu metoda bicubic:


zi3 = interp2(x,y,z,xi,yi,'bicubic');

6. Compararea graficelor corespunztoare diferitelor metode de interpolare:

48

7. Compararea contururilor suprafeelor n cazul diferitelor metode de interpolare:

Se observ c metoda bicubic produce cele mai netede contururi. O metod cum ar fi cea a
celor mai apropiate vecinti este preferat ns n anumite aplicaii, cum ar fi cele medicale unde
nu trebuie generate date noi.
6. REPREZENTAREA FUNCIILOR. ECUAII DIFERENIALE
6.1. Reprezentarea i plotarea funciilor matematice
Reprezentarea funciilor matematice

Funciile matematice uzuale sunt furnizate de MATLAB ca funcii buit-in (cum ar fi sin,
cos, log10, log, atan etc.).
Pentru reprezentarea altor funcii matematice se utilizeaz exprimarea n fiiere tip .m .
De exemplu, o funcie cum este urmtoarea:

poate fi creat ntr-un fiier MATLAB de tip function i poate fi utilizat ulterior ca intrare n
alte funcii (aa-numitele funcii de funcii a se vedea paragraful 2.3).
Fiierul care descrie aceast funcie a mai fost prezentat n paragraful 2.3:
function y = humps(x)
y = 1./((x-0.3).^2+0.01)+1./((x-0.9).^2+0.04)-6;

O alt posibilitate este crearea la nivelul liniei de comand a unui obiect inline prin folosirea
unei expresii tip ir de caractere:
f=inline(`1./((x-.3).^2+.01)+1./((x-.9).^2+.04)-6');

Pentru a evalua aceast funcie f n 2.0 tastm simplu:


f(2.0)

49

ans =
-4.8552
Alt exemplu:
f = inline('y*sin(x)+x*cos(y)','x','y')
f(pi,2*pi)
ans =
3.1416

Plotarea funciilor
Pentru reprezentarea grafic a funciilor se poate utiliza funcia fplot. Se pot controla
limitele axelor de reprezentare grafic.
Exemplu: trasarea graficului funciei humps pentru limitele [-5 5] ale axei x:
fplot('humps',[-5 5])

Dac dorim i precizarea limitelor de reprezentare pe axa y (realizarea unui zoom) folosim
comanda:
fplot('humps',[-5 5 -10 25])

Un alt exemplu de folosire direct a funciei fplot:


50

fplot('2*sin(x+3)',[-1 1])

Se poate realiza i reprezentarea mai multor funcii pe acelai grafic:


fplot('[2*sin(x+3), humps(x)]',[-1 1])

6.2. Minimizarea funciilor i gsirea zerourilor


MATLAB-ul furnizeaz o serie de funcii de nivel nalt care realizeaz sarcini de optimizare a
funciilor. Aceste funcii sunt grupate n principal pe urmtoarele domenii:
Minimizarea funciilor de o variabil
Minimizarea funciilor de mai multe variabile
Setarea opiunilor de minimizare
Gsirea zerourilor unor funcii
Pentru exemplificare vom considera minimizarea unei funcii de o singur variabil i gsirea
zerourilor pentru aceast funcie.
Minimizarea unei funcii
Pentru gsirea unui minim local al unei funcii scrise ntr-un fiier function, se utilizeaz
funcia fminbnd.
Relum aici exemplul din paragraful 2.3: pentru gsirea minimului funciei humps n intervalul
(0.3, 1) folosim instruciunea:
x = fminbnd('humps',0.3,1)
x =
0.6370

Dac dorim o afiare detaliat a pailor fcui de prodedura de minimizare se utilizeaz


urmtoarea sintax:
x = fminbnd('humps',0.3,1,optimset('Display','iter'))
Func-count
x
1
0.567376
2
0.732624
3
0.465248
4
0.644416
5
0.6413
6
0.637618
7
0.636985
8
0.637019

f(x)
12.9098
13.7746
25.1714
11.2693
11.2583
11.2529
11.2528
11.2528

Procedure
initial
golden
golden
parabolic
parabolic
parabolic
parabolic
parabolic

51

9
x =

0.637052

11.2528

parabolic

0.6370

Gsirea zerourilor
Funcia fzero permite gsirea zerourilor unei funcii (este vorba de fapt de o ecuaie cu o
singur necunoscut).
Dac se d un punct de plecare x0 pentru procedura de cutare, fzero va cuta un interval n
jurul acestui punct n care funcia schimb semnul. Dac un astfel de interval este gsit, fzero
returneaz valoarea pentru care funcia schimb semnul (adic zeroul), iar dac un astfel de
interval nu este gsit returneaz NaN.
Alt variant permite cutarea ntr-un interval specificat de utilizator.
Exemplu: gsirea unui zerou al funciei humps n apropiere de -0.2:
a = fzero('humps',-0.2)
a =
-0.1316

Pentru verificare evalum funcia n punctul -0.1316 i gsim ntr-adevr o valoare foarte
aproape de zero:
humps(a)
ans =
8.8818e -16

Se poate folosi i varianta cu interval de cutare precizat de utilizator. n continuare este


prezentat aceast variant plus folosirea unor opiuni suplimentare pentru afiarea detaliat a
informaiilor despre procedur i a pailor:
options = optimset('Display','iter');
a = fzero('humps',[-1 1],options)
Func-count
x
f(x)
1
-1
-5.13779
2
1
16
3
-0.513876
-4.02235
4
0.243062
71.6382
5
-0.473635
-3.83767
6
-0.115287
0.414441
7
-0.150214
-0.423446
8
-0.132562
-0.0226907
9
-0.131666
-0.0011492
10
-0.131618 1.88371e-007
11
-0.131618 -2.7935e-011
12
-0.131618 8.88178e-016
13
-0.131618 -9.76996e-015
Zero found in the interval: [-1, 1].

Procedure
initial
initial
interpolation
bisection
interpolation
bisection
interpolation
interpolation
interpolation
interpolation
interpolation
interpolation
interpolation

a =

-0.1316

6.3. Integrarea numeric


Aria subgraficului unei funcii F(x) poate fi determinat prin integrarea numeric, proces care
se numete quadratur (quadrature).
Pentru rezolvarea integrrii numerice n cazul monodimensional exist dou funcii MATLAB:
quad, care folosete un algoritm de tip Simpson
quad8, care utilizeaz un algoritm de tip Newton
Exemplu: pentru integrarea funciei humps ntre 0 i 1 folosim comanda
52

q = quad('humps',0,1)
q =
29.8583

Funciile quad sau quad8 permit i alte argumente de intrare care specific eroarea tolerat
pentru integrare i alte opiuni (a se vedea cu help).
Exemplu de integrare numeric: calculul lungimii unei curbe
Vom considera o curb dat de ecuaiile:
cu
O plotare tri-dimensional a acestei curbe poate fi obinut cu
t = 0:0.1:3*pi;
plot3(sin(2*t),cos(t),t)

10
8
6
4
2
0
1
0.5
0.5

-0.5
-1

-0.5
-1

Lungimea acestei curbe este dat de formula urmtoare:

Pentru calculul lungimii trebuie integrat numeric integrala de mai sus. Pentru aceasta se
creeaz mai nti o funcie MATLAB care descrie integrandul pe care o numim fcurba:
function f = fcurba(t)
f = sqrt(4*cos(2*t).^2 + sin(t).^2 + 1);

i apoi se integreaz cu ajutorul funciei quad:


lungime = quad('fcurba',0,3*pi)
lungime =
1.7222e+01

6.4. Rezolvarea ecuaiilor difereniale


53

MATLAB-ul dispune de metode i funcii care pot rezolva problema condiiilor iniiale
(Cauchy) ale sistemelor de ecuaii difereniale ordinare (ODE Ordinary Differential Equations).
n tabelul urmtor sunt prezentate succint cteva din aceste funcii.
Categorie
Funcii
ODE

care

Funcie
rezolv ode45

odeset

Rezolv ecuaii difereniale nonstiff, metod de ordin


mediu.
Rezolv ecuaii difereniale nonstiff, metod de ordin
sczut.
Rezolv ecuaii difereniale nonstiff, metod de ordin
variabil.
Rezolv ecuaii difereniale stiff i ecuaii algebrice
difereniale, metod de ordin variabil.
Rezolv ecuaii difereniale stiff, metod de ordin
sczut.
Ecuaii difereniale stiff i ecuaii algebrice difereniale,
metoda trapezelor.
Rezolv ecuaii difereniale stiff, metod de ordin
sczut.
Creeaz sau schimb opiuni de structur ale ODE.

odeget

Permite obinerea parametrilor din opiunile ODE.

odeplot

Plotarea soluiilor ODE (n funcie de timp).

odephas2

Trasarea planului fazelor.

odephas3

Trasarea spaiului fazelor (tri-dimensional).

odeprint

Permite tiprirea soluiei ODE n fereastra de comand.

ode23
ode113
ode15s
ode23s
ode23t
ode23tb
Opiuni ODE

Funcii de ieire
ODE

Descriere

Observaie: La ecuaiile difereniale ordinare de tip stiff (rigide) soluiile pot avea variaii foarte
rapide n timp n raport cu intervalul de timp de integrare i este necesar folosirea unor pai de
integrare foarte mici, ceea ce nu mai este indicat la ecuaiile nonstiff.
Exemplu de rezolvare: ecuaia van der Pol
Ecuaia van der Pol este un exemplu clasic de ecuaie diferenial:

unde > 0 este un parametru scalar.


Pentru implementarea algoritmului de rezolvare este necesar rescrierea ecuaiei de ordinul 2 ca
un sistem de dou ecuaii difereniale de ordinul 1. Pentru aceasta se introduce variabila y2 care este
derivata n raport cu timpul a variabilei y1 . Vom avea

54

Pentru a reprezenta n MATLAB acest sistem de ODE n scopul gsirii soluiilor, trebuie scris n
primul rnd un fiier care descrie sistemul (un fiier de tip function). Un fiier ODE accept cel
puin dou argumente, t i y.
Pentru ecuaia van der Pol cu = 1, fiierul este urmtorul (y1 i y2 devin y(1) i y(2)):
function dy = vdp1(t,y)
dy = [y(2); (1-y(1)^2)*y(2)-y(1)];

La pasul urmtor, dup ce sistemul de ecuaii a fost scris, se poate utiliza una din metodele de
rezolvare prezentate n tabelul anterior. Trebuie furnizat un interval de timp pentru care se dorete
calculul soluiilor i bineneles condiiile iniiale.
Pentru exemplul van der Pol, se poate apela la ode45. Dac intervalul de timp este [0 20]
iar condiiile iniiale y(1)=2 i y(2)=0 vom avea
[t,y] = ode45('vdp1',[0 20],[2; 0]);

Ieirea [t,y] este un vector coloan care conine vectorul timp t i soluia de tip tablou y.
Fiecare linie din y corespunde unui element (moment) din vectorul timp.
Pentru trasarea graficului cu soluia se folosete comanda plot:
plot(t,y(:,1),'-',t,y(:,2),'- -')
title('Solution of van der Pol Equation, mu = 1');
xlabel('time t');
ylabel('solution y');
legend('y1','y2')

Se obine urmtorul grafic care conine evoluiile celor dou componente ale soluiei n timp:

Dac se dorete i trasarea planului fazelor se pot folosi liniile de comand:


options=odeset('OutputFcn','odephas2');
[t,y] = ode45('vdp1',[0 20],[2; 0],options);

i obinem planul fazelor (este vorba de trasarea componentei y(1) versus componenta y(2)):

55

3
2
1
0
-1
-2
-3
-3

-2

-1

7. PROGRAMAREA N LIMBAJUL MATLAB


7.1. Fiiere MATLAB
Fiierele care conin cod MATLAB sunt numite M-files sau fiiere .m . Dup cum s-a precizat n
capitolul de Fundamente ale programrii n MATLAB, aceste fiiere pot fi funcii (functions) care
accept argumente de intrare i furnizeaz ieiri, sau pot fi fiiere script care execut o serie de
instruciuni MATLAB. Pentru ca MATLAB-ul s recunoasc un fiier ca fiier M-file trebuie ca
numele acestuia s se termine cu extensia .m.
Fiierul .m poate fi creat cu un editor de text i apoi poate fi folosit ca orice funcie sau comand
MATLAB:
1. Crearea unui fiier cu un
editor de text.

2. Apelarea fiierului .m de
la linia de comand sau
din alt fiier .m.

Caracteristicile celor dou tipuri de fiiere sunt prezentate n tabelul urmtor:


Fiiere Script
Fiiere Function
Nu acccept argumente de intrare i nu Accept argumente de intrare i returneaz ieiri.
returneaz ieiri.
Opereaz cu datele din workspace.
Variabilele interne ale funciei sunt locale (implicit).
Utile pentru automatizarea unei serii de Utile
pentru
extinderea
limbajului
pai care trebuie executai de multe ori.
MATLAB pentru diverse aplicaii.
56

Script-uri
Fiierele script sunt cele mai simple fiiere MATLAB, nu au argumente de intrare sau de ieire
i sunt utile pentru executarea secvenial a unor calcule care altfel ar trebui executate n mod
repetat de la linia de comand. Script-urile opereaz cu datele din workspace sau pot crea date noi.
Aceste date sunt disponibile dup terminarea execuiei fiierului.
Prile componente ale unui fiier de tip function
O funcie .m are urmtoarele pri componente:

Linia de definire a funciei

Linia de prim help H1

Textul Help-ului

Corpul funciei

Comentarii

Linia de definire
Aceast linie informeaz MATLAB-ul c fiierul conine o funcie i specific argumentele.
Exemplu:

Linia H1
Linia H1 este o linie de comentariu care ncepe cu semnul "%" i furnizeaz prima linie text
atunci cnd utilizatorul tasteaz help function_name la prompterul MATLAB.
Textul Help-ului
Se poate crea un help online prin introducerea uneia sau mai multor linii de comentariu dup
linia H1, fiecare linie ncepnd cu "%".
Corpul funciei
Corpul funciei conine toate instruciunile n cod MATLAB care permit efectuarea calculelor i
asigneaz valori argumentelor de ieire. Declaraiile din corp pot conine apelri de funcii,
instruciuni de salt, intrri/ieiri interactive, calcule etc.
Comentarii
O linie de comentariu ncepe dup cum s-a precizat cu semnul "%" i poate fi plasat oriunde
ntr-un fiier.
Pot fi adugate linii albe oriunde n fiier, acestea fiind ignorate.
7.2. Tipuri de date i operatori
Tipuri de date
MATLAB-ul are ase tipuri fundamentale de date (sau clase), fiecare putnd fi considerat ca
tablou multidimensional. Cele ase clase sunt: double, char, sparse, storage, cell i
struct. Versiunile bi-dimensionale ale acestor tablouri sunt numite matrici i de aici provine i
numele de MATLAB.

57

n tabelul urmtor sunt prezentate detaliat tipurile de date:


Clasa

Exemple

Descriere
Tip de date virtual.
Tablou tip celul. Elementele celulei conin alte
tablouri.
Tablou de tip caracter (sau ir de caracterestring);
fiecare caracter are 16 bii lungime.
Tablou numeric n dubl precizie (cel mai obinuit
tip de variabil MATLAB).
Tip de date virtual.
Matrice de tip sparse n dubl precizie (doar 2D). Tablourile de tip sparse stocheaz matrici cu
doar cteva elemente nenule ntr-o fraciune din
spaiul necesar unei matrici normale echivalente.
Tip de date virtual.
Tablou tip structur, care conine nume de cmpuri,
cmpuri care conin alte tablouri.

Array
Cell

{17'hello'eye(2)}

Char

'Hello'

Double

[1 2;3 4]
5+6I

Numeric
sparse

Speye(5)

storage
struct

a.day = 12;
a.color = 'Red';
a.mat = magic(3);
Uint8(magic(3))

uint8
User
Object

Tablou de numere ntregi fr semn pe 8 bii.


Tip de date definit de utilizator.

Inline('sin(x)')

Operatori
Operatorii MATLAB pot fi clasificai n trei categorii:

Operatori aritmetici

Operatori relaionali care compar operanzii cantitativ

Operatori logici

Operatori aritmetici
+
Adunare

Operatorul dou puncte

Scdere

.^

Putere

.*

nmulire

.'

Transpusa

./

mprire la dreapta

'

Transpusa complex conjugat

.\

mprire la stnga

nmulire de matrici

Plus unar

mprire matriceal la dreapta

Minus unar

mprire matriceal la stnga

Putere de matrice

Cu excepia unor operatori matriceali, operatorii aritmetici lucreaz cu elementele


corespondente ale unor tablouri de dimensiuni egale. Pentru vectori i tablouri dreptunghiulare
ambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei este

58

scalar. n acest caz MATLAB-ul aplic scalarul fiecrui element al celuilalt operand (proprietatea de
expansiune scalar).
Operatori relaionali
<
Mai mic
<= Mai mic sau egal
>
Mai mare
>= Mai mare sau egal
== Egal cu
~= Diferit de
Operatorii relaionali compar elementele corespondente ale unor tablouri de dimensiune egal.
Operatorii relaionali lucreaz totdeauna element cu element. Exemplu:
A = [2 7 6;9 0 5;3 0.5 6];
B = [8 7 0;3 2 5;4 -1 7];
A == B
ans =
0
0
0

1
0
0

0
1
0

Operatori logici
&
AND (I)
|
OR (SAU)
~
NOT (NU)

O expresie care utilizeaz operatorul & este adevrat dac ambii operanzi sunt adevrai. n
termeni numerici, expresia este adevrat dac ambii operanzi sunt nenuli. Exemplu:
u
v
u
ans

= [1 0 2 3 0 5];
= [5 6 1 0 0 7];
& v
=
1
0
1
0
0

O expresie care utilizeaz operatorul | este adevrat dac unul dintre operanzi este logic
adevrat sau dac ambii operanzi sunt adevrai. n termeni numerici, expresia este fals
dac ambii operanzi sunt nuli. Exemplu:
u | v
ans =
1
1

O expresie care utilizeaz operatorul NOT, ~, neag operandul. n termeni numerici, orice
operand nenul devine nul i orice operand nul devine unu. Exemplu:
~u
ans =
0

Operatorii logici lucreaz cu elementele corespondente ale unor tablouri de dimensiuni egale.
Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cu
excepia situaiei n care unul dintre ei este scalar. n acest caz, ca i la operatorii aritmetici,
MATLAB-ul aplic scalarul fiecrui element al celuilalt operand.
59

Funcii logice
n plus fa de operatorii logici MATLAB-ul furnizeaz i funcii logice:
Funcie
xor

all

any

Descriere
Exemple
a = 1;
Realizeaz sau exclusiv. Returneaz logic adevrat
b = 1;
dac unul din operanzi este adevrat i cellalt fals.
xor(a,b)
n termeni numerici, returneaz 1 dac un operand
ans =
este nenul i cellalt este zero.
0
u = [0 1 2 0];
Returneaz 1 dac toate elementele unui vector sunt
all(u)
adevrate sau nenule. Opereaz i cu matrici (pe
ans =
coloane).
0

Returneaz 1 dac oricare din elementele


argumentului sunt adevrate sau nenule; n caz
contrar returneaz 0.

A = [0 1 2;3 5 0];
all(A)
ans =
0
1
0
v = [5 0 8];
any(v)
ans =
1

Alte funcii: isnan, isinf, find (a se folosi help pentru detalii).


Prioritatea operatorilor
Deoarece se pot construi expresii cu diverse tipuri de operatori, nivelurile de prioritate
determin ordinea n care sunt evaluate expresiile. n cadrul fiecrui nivel, operatorii au prioritate
egal i sunt evaluai de la stnga la dreapta.
Regulile de prioritate sunt prezentate n continuare, de la nivelul de prioritate cel mai mare spre
cel mai mic.
Operator
()
~ (negare)
.' .^ ' ^ + (plus unar) - (minus unar)
.* ./ .\ * / \
+ (adunare) - (scdere)
: < <= > >= == ~=
& |

Nivel de prioritate
Prioritate maxim

Prioritate minim

7.3. Instruciuni de salt i bucle


n MATLAB exist mai multe tipuri de instruciuni de control al buclelor:

if, mpreun cu else i elseif execut un grup de instruciuni pe baza unei condiii
logice.

switch, case i otherwise execut diverse grupuri de instruciuni n funcie de


valoarea unei anumite condiii logice.

while execut un grup de instruciuni de un numr nedefinit de ori, pe baza unei condiii
logice.

for execut un grup de instruciuni de un numr fixat de ori.


60

break termin execuia pentru o bucl for sau while.

try...catch schimb controlul buclei dac o eroare este detectat n timpul execuiei.

return provoac ntoarcerea la funcia care a apelat prcedura.

Toate instruciunile de salt folosesc comanda end pentru a indica sfritul blocului respectiv.
Exemple de utilizare a unor instruciuni de salt:
Instruciunile if i elseif:
if n < 0

% Daca n este negativ afiseaza un mesaj de eroare.

disp('Intrarea trebuie sa fie pozitiva');


elseif rem(n,2)= =0

%Daca n este pozitiv si par, imparte-l la 2.

A = n/2;
else
A = (n+1)/2;

%Daca n este pozitiv si impar incrementeaza si imparte la 2

end

Instruciunea for:
for i = 1:m
for j = 1:n
A(i,j) = 1/(i + j - 1);
end
end

7.4. Evaluarea datelor de tip caracter


Evaluarea datelor de tip caracter asigur putere i flexibilitate limbajului MATLAB.
Funcia eval
Funcia eval evalueaz un ir de caractere care conine o expresie, o declaraie sau un apel de
funcie. n cea mai simpl form, sintaxa este urmtoarea:
eval('string')

Exemplu: evaluarea unei expresii folosite la generarea unei matrice Hilbert de ordinul n:
t = '1/(i+j-1)';
for i = 1:n
for j = 1:n
a(i,j) = eval(t);
end

end
Alt exemplu de utilizare a funciei eval pentru o declaraie:
eval('t = clock')

Funcia feval
Funcia feval difer de eval prin faptul c execut o funcie a crui nume este ntr-un ir de
caractere. Se poate folosi feval i funcia input pentru a alege din mai multe sarcini definite de
fiiere .m . Exemplu:
fun = ['sin'; 'cos'; 'log'];

61

k = input('Choose function number: ');


x = input('Enter value: ');
feval(fun(k,:),x)

Este indicat folosirea funciei feval n locul funciei eval, deoarece execuia este mai
rapid.
Construirea irurilor de caractere pentru evaluare
Se pot concatena irurile de caractere pentru a crea expresii de intrare necesare funciei eval.
n continuare este prezentat un exemplu n care funcia eval creeaz 10 variabile numite P1,
P2, ...P10, i seteaz fiecare variabil la o anumit valoare:
for i=1:10
eval(['P',int2str(i),'= i.^2'])
end

7.5. Reprezentarea i manipularea informaiilor despre dat i timp


MATLAB-ul furnizeaz funcii pentru manipularea informaiilor despre dat i timp, funcii
grupate n directorul timefun.
Categorie
Data i timpul curent

Conversii

Utilitare

Timing

Funcie
now
date
clock
datenum
datestr
datevec
calendar
weekday
eomday
datetick
cputime
tic, toc
etime

Descriere
Data i timpul curent ca numr serial.
Data curent ca ir de caractere.
Data i timpul curent ca vector.
Conversia la numr serial al datei.
Conversia la reprezentare de tip caracter.
Componentele datei.
Calendar.
Ziua din sptmn.
Ultima zi din lun.
Etichete formatate de tip dat.
Timpul CPU n secunde.
Start i oprire pentru timer.
Timp scurs.

7.6. Intrri utilizator


Pentru a obine o intrare de la utilizator n timpul execuiei unui fiier exist urmtoarele
posibiliti:
Afiarea unui prompter prin intermediul unei funcii tip input i introducerea unor date de
la tastatur.
Oprirea execuiei cu o comand pause (reluarea execuiei la apsarea unei taste).
Construirea unei interfee grafice GUI complet.
Funcia input asigur afiarea unui prompter i ateapt un rspuns de la utilizator. Sintaxa
este:
n = input('prompt_string')

Funcia determin afiarea irului de caractere prompt_string, ateapt o intrare de la


tastatur i returneaz valoarea introdus de la tastatur. Funcia este util pentru implementarea
aplicaiilor de tip meniu. Aceast funcie poate s returneze intrarea de la utilizator sub form de
caracter. Exemplu:
name = input('Enter address: ','s');

62

Comanda pause, fr argumente, oprete execuia pn la apsarea unei taste. Pentru a avea o
pauz de n secunde se folosete comanda:
pause(n)

8. GRAFICE I INTERFEE GRAFICE N MATLAB


8.1. Tehnici de plotare
n general, pentru a realiza o reprezentare grafic, trebuie parcurse etapele urmtoare:
Etapa

Instruciuni

1.Pregtirea datelor

x = 0:0.2:12;
y1 = bessel(1,x);
y2 = bessel(2,x);
y3 = bessel(3,x);

2. Selectarea ferestrei
grafice i pozionarea
graficului n fereastr
3. Apelarea unei
funcii elementare de
plotare
4. Selectarea
caracteristicilor liniei i
markerului.
5. Setarea limitelor axelor,
gridare (caroiere)
6. Completarea graficului
cu etichete pe axe,
legend, text

figure(1)
subplot(2,2,1)

7. Export grafice

print -depsc -tiff -r200 myplot

h = plot(x,y1,x,y2,x,y3);

set(h,'LineWidth',2,{'LineStyle'},{'--';':';'-.'})
set(h,{'Color'},{'r';'g';'b'})
axis([0 12 -0.5 1])
grid on
xlabel('Time')
ylabel('Amplitude')
legend(h,'First','Second','Third')
title('Bessel Functions')
[y,ix] = min(y1);
text(x(ix),y,'First
Min
\rightarrow',...
'HorizontalAlignment','right')

Funciile de baz folosite la plotare sunt prezentate n tabelul urmtor:


Funcie
Utilizare
Plot
Genereaz grafice 2-D cu scalare liniar a axelor
Plot3
Genereaz grafice 3-D cu scalare liniar a axelor
loglog
Genereaz grafice cu scalare logaritmic a axelor
semilogx
Genereaz grafice cu scalare liniar a axei y i cu scalare logaritmic a axei x
semilogy
Genereaz grafice cu scalare liniar a axei x i cu scalare logaritmic a axei y
plotyy
Genereaz grafice cu dubl reprezentare a axei y (pe stnga i pe dreapta)
8.1.1. Plotri 2 D elementare
Generarea graficelor
Funcia plot are diferite forme n funcie de argumentele de intrare.
63

Dac de exemplu y este un vector, plot(y) produce un grafic liniar al elementelor lui
y versus indexul elementelor sale.
Dac se specific doi vectori ca argumente, plot(x,y) produce graficul lui y versus
x.

Exemplu:

t = 0:pi/100:2*pi;
y = sin(t);
plot(t,y)
grid on

Se pot realiza grafice multiple utiliznd un singur apel al funciei plot. MATLAB-ul
realizeaz automat o reprezentare cu culori diferite pentru a permite distingerea graficelor.
Exemplu:
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y,t,y2,t,y3)

Specificarea stilului de linie


Se pot crea diferite tipuri de linii pentru fiecare set de date prin folosirea unor identificatori de
tip string n funcia plot. Exemplu:
t = 0:pi/100:2*pi;
y = sin(t);
y2 = sin(t-0.25);
y3 = sin(t-0.5);
plot(t,y,'-',t,y2,'--',t,y3,':')

64

Funciile de plotare accept deci argumente de tip caracter care specific stilul liniei,
simbolurile utilizate pentru marker, culoarea etc. Forma general este:
plot(x,y,'linestyle_marker_color')

unde linestyle_marker_color este un ir de caractere construit din:


Un stil de linie (de exemplu linie punctat, plin etc.)
Un tip de marker (de exemplu x, *, o, etc.)
Un specificator de culoare (c,m,y,k,r,g,b,w)
Se poate folosi un specificator sau mai muli, n orice ordine. De exemplu,
'go--'
definete o linie ntrerupt, cu markere circulare, ambele colorate n verde.
Specificarea culorii i dimensiunii liniilor
Caracteristicile liniilor se pot controla prin specificarea unor valori pentru proprietile linilor:
LineWidth specific limea unei linii.
MarkerEdgeColor seteaz culoarea markerului sau culoarea marginilor markerului n
cazul anumitor forme (cerc, ptrat etc.)
MarkerFaceColor seteaz culoarea interiorului markerelor.
MarkerSize specific dimensiunea markerului.

Exemplu:
x = -pi:pi/10:pi;
y = tan(sin(x)) - sin(tan(x));
plot(x,y,'--rs','LineWidth',2,...
'MarkerEdgeColor','k',...
'MarkerFaceColor','g',...
'MarkerSize',10)

65

Suprapunerea unor grafice peste un grafic existent


Se pot aduga grafice peste unul existent cu comanda hold. Dac se seteaz hold on,
MATLAB-ul nu nltur graficul existent, ci suprapune noul grafic n aceeai fereastr grafic.
Exemplu:
semilogx(1:100,'+')
hold on
plot(1:3:300,1:100,'--')
hold off

Plotarea simultan a markerelor i liniilor


Pentru plotarea markerelor (care indic punctele corespunztoare datelor) i a liniilor (care
unesc aceste date) se specific att tipul markerului ct i stilul liniei. Exemplu:
x = 0:pi/15:4*pi;
y = exp(2*cos(x));
plot(x,y,'-r',x,y,'ok')

66

Plotarea datelor din matrici


Atunci cnd funcia plot este utilizat cu un singur argument de tip matrice:
plot(Y)
va fi realizat un grafic pentru fiecare coloan a matricii, cu axa x reprezentnd indexul de linie 1:m,
cu m numrul liniilor din Y.
Exemplu: cu instruciunea Z = peaks; este creat o matrice 49x49 obinut printr-o
evaluare de funcie. Dac plotm matricea cu plot(Z)vom avea un grafic cu 49 de linii.

Plotarea cu axa Y dubl


Comanda plotyy permite crearea unor grafice pentru dou seturi de date i cu reprezentare
dubl a axei Y, pe partea stng i pe partea dreapt.
Exemplu:
t = 0:pi/20:2*pi;
y = exp(sin(t));
plotyy(t,y,t,y,'plot','stem')

67

Setarea parametrilor axelor


MATLAB-ul seteaz automat limitele axelor i gradarea acestora. Se pot ns folosi i setrile
utilizatorului, cu comenzile:

axis seteaz axele pentru fereastra grafic curent.

axes creeaz axe noi cu caracteristici specificate.

get i set permit obinerea i setarea unor proprieti ale axelor.

gca returneaz identificatorul axelor curente.

Se pot parcurge n detaliu aceste comenzi prin apelarea la help.


Ferestre de tip figur
MATLAB-ul direcioneaz ieirile grafice spre o fereastr distinct de fereastra de comand.
Aceast fereastr grafic este denumit figur (figure). (a se vedea paragraful 3.3).
Funcia figure genereaz ferestre grafice. De exemplu,
figure

genereaz o nou fereastr i o face fereastra curent.


Afiarea unor grafice multiple n aceeai fereastr grafic
Se poate realiza o afiare a mai multor grafice n aceeai fereastr prin intermediul funciei
subplot.
Funcia subplot(m,n,i) desparte fereastra de tip figur ntr-o matrice m x n de mici
subploturi (subgrafice) i selecteaz subplotul i ca grafic curent. Exemplu:
t = 0:pi/20:2*pi;
[x,y] = meshgrid(t);
subplot(2,2,1)
plot(sin(t),cos(t))
axis equal
subplot(2,2,2)
z = sin(x)+cos(y);
plot(t,z)
axis([0 2*pi -2 2])
subplot(2,2,3)
z = sin(x).*cos(y);
plot(t,z)
axis([0 2*pi -1 1])
subplot(2,2,4)
z = (sin(x).^2)-(cos(y).^2);
plot(t,z)
axis([0 2*pi -1 1])

68

Comenzi de marcare, etichetare i gradare a graficelor


MATLAB-ul furnizeaz comenzi de etichetare a fiecrei axe i de plasare a unui text n orice loc
din grafic. Comenzile sunt prezentate n tabelul urmtor.
Comand

Descriere

title

Adaug un titlu
Adaug o etichet pe axa x
Adaug o etichet pe axa y
Adaug o etichet pe axa z
Adaug o legend
Afieaz un text la o locaie specificat
Plaseaz textul pe grafic utiliznd mouse-ul

xlabel
ylabel
zlabel
legend
Text
Gtext

Etichetarea axelor
Se pot aduga etichete pe axe cu comenzile xlabel, ylabel, zlabel.
Exemplu:
xlabel('t = 0 to 2\pi','FontSize',16)
ylabel('sin(t)','FontSize',16)
title('\it{Value of the Sine from Zero to Two
Pi}','FontSize',16)

69

MATLAB-ul interpreteaz caracterele care urmeaz dup backslash "\" ca i comenzi TeX.
Aceste comenzi permit reprezentarea unor simboluri cum ar fi literele greceti sau sgeile.
Adugarea textelor
Prin utilizarea funciei text se poate plasa un text (ir de caractere) oriunde pe grafic.
Exemplu:
text(3*pi/4,sin(3*pi/4),...
'\leftarrowsin(t) = .707',...
'FontSize',16)
text(pi,sin(pi),'\leftarrowsin(t) = 0',...
'FontSize',16)
text(5*pi/4,sin(5*pi/4),'sin(t)=-.707\rightarrow',...
'HorizontalAlignment','right',...
'FontSize',16)

Plasarea textului n mod interactiv


Dac utilizm funcia gtext se poate plasa un text n mod interactiv, cu mouse-ul, oriunde pe
grafic. Aceast funcie accept ca argument un ir de caractere i ateapt pn cnd utilizatorul
selecteaz un loc pe grafic cu ajutorul mouse-ului.
70

Se poate utiliza i Plot Editor pentru plasarea textului (a se vedea paragraful 3.3).
8.1.2. Grafice 2 D specializate
MATLAB-ul permite lucrul cu o mare varietate de tipuri de grafice, astfel nct informaiile s
poat fi prezentate eficient.
Tipul de grafic selectat depinde n mod esenial de natura datelor prelucrate.
Graficele de tip bare sau arie (bar, area) sunt utile pentru vizualizarea unor rezultate,
compararea lor i afiarea unei contribuii individuale din total.

Graficele de tip statistic (pie charts) indic contribuiile individuale dintr-un total.

Histogramele (histogram) sunt utile pentru a indica distribuia valorilor datelor.

Graficele de tip stem i stairstep sunt utile pentru date discrete.

Graficele compass, feather, quiver sunt utile pentru plotarea vectorilor de tip
direcie i vitez.

Graficele de tip contur (contour) sunt utile la reprezentarea unor regiuni de valori egale
ale datelor.

Plotrile interactive (interactive) permit selectarea unor puncte de plotare n mod


interactiv.

Graficele de tip animaie (animations) adaug date la grafice consecutive i creeaz o


animaie.

Grafice de tip Bar i Area


Funcie
Descriere
Bar
Barh
bar3
bar3h

Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale


Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale
Afieaz coloanele unor matrici mxn ca m grupe de n bare verticale 3-D
Afieaz coloanele unor matrici mxn ca m grupe de n bare orizontale tridimensionale
3-D
Area
Afieazdateledinvectoricasuprafee
Grafice Bar grupate
Ca setare implicit, un grafic cu bare reprezint fiecare element dintr-o matrice cu o singur
bar. n cazul unui grafic 2-D, barele create cu funcia bar sunt distribuite de-a lungul axei x, cu
fiecare element dintr-o coloan desenat la alt locaie. Toate elementele dintr-o linie sunt
reprezentate grupat la aceeai locaie pe axa x.
Exemplu:
Y = [5
8
9
5
4
bar(Y)

2
7
8
5
3

1
3
6
5
2];

71

Grupele de coloane
reprezint linii din
Y.

Grafice Bar 3-D separate


Funcia bar3, n cea mai simpl form, traseaz fiecare element ca un bloc separat de tip 3-D,
cu elementele fiecrei coloane distribuite de-a lungul axei y. Barele care reprezint elementele din
prima coloan a unei matrice sunt centrate la 1 pe axa x .a.m.d. Barele care reprezint elementele
din ultima coloan sunt centrate la valoarea size(Y,2) de pe axa x. Exemplu: bar3(Y).

Ultimul grup de
bare reprezint
ultima linie din Y

Grafice Bar 3-D grupate


Pentru a realiza un grafic de bare grupate 3 D se specific argumentul 'group':
bar3(Y,'group')

Ultimul grup de bare


reprezint ultima linie

72

Grafice statistice - pie charts


Graficele pie afieaz procentul cu care fiecare element al unui vector sau matrice contribuie la
suma tuturor elementelor. Funciile pie i pie3 creeaz grafice 2-D i 3-D.
n continuare prezentm un exemplu de vizualizare a ponderii a trei produse din totalul
vnzrilor. Se consider o matrice X, pentru care fiecare coloan reprezint vnzrile anuale pentru
cte un produs, pe o perioad de nregistrri de 5 ani:
X = [19.3
34.2
61.4
50.5
29.4

22.1
70.3
82.9
54.9
36.3

51.6;
82.4;
90.8;
59.1;
47.0];

Se pot calcula vnzrile pentru fiecare produs n cei 5 ani cu ajutorul funciei:
x = sum(X);

Dac utilizm argumentul de intrare explode putem reprezenta ntr-un mod explodat care
dintre produse a avut o contribuie mai mare la vnzri (de exemplu). Programul are urmtoarea
form:
explode = zeros(size(x));
[c,offset] = max(x);
explode(offset) = 1;
h = pie(x,explode); colormap summer

Crearea de grafice tip contur


Funciile contour i contour3 afieaz contururi 2-D i 3-D. Funciile cer un singur argument,
i anume o matrice, ale crei date sunt interpretate ca nlimi fa de un plan.
Pentru a seta numrul de niveluri de contur (implicit se realizeaz automat pe baza valorilor
minime i maxime) se folosete un argument suplimentar opional. De exemplu,
[X,Y,Z] = peaks;
contour(X,Y,Z,20)

afieaz 20 de contururi ale funciei peaks ntr-o vedere bidimensional.

73

Dac dorim o reprezentare 3 D putem folosi comenzile:


[X,Y,Z] = peaks;
contour3(X,Y,Z,20)
h = findobj(`Type','patch');
set(h,'LineWidth',2)
title('Twenty Contours of the peaks Function')

Animaie
Se pot crea secvene animate n MATLAB pe dou ci:

Salvarea unui numr de imagini i rularea lor ca pe un film.

tergerea continu i redesenarea unor obiecte pe ecran, fcnd schimbri n mod


incremental la fiecare redesenare.

Filme
Se parcurg trei etape:
Se folosete moviein pentru iniializarea memoriei pentru o matrice suficient de mare.
Se utilizeaz getframe pentru a genera fiecare cadru de film, care este returnat ca un
vector coloan cu care se poate construi o matrice de tip film.

74

Se folosete movie pentru rularea filmului de un numr specificat de ori cu o vitez


specificat.

tergere i redesenare
Pot fi create diferite efecte prin selectarea unor moduri de tergere. Pentru crearea unei animaii
sunt utile trei moduri de tergere:
none - MATLAB nu terge obiectele.
background - MATLAB terge obiectul i l redeseneaz n background. Acest mod terge
obiectul i tot ce este sub el (linii de grid etc.).
xor Acest mod terge doar obiectul i este cel mai folosit la animaie.
Pentru vizualizarea unor efecte de animaie i construirea unor exemple proprii este indicat
utilizarea facilitii demo a MATLAB-ului.
8.1.3. Plotri tridimensionale (3 D)
Paii tipici care trebuie parcuri pentru trasarea unor grafice tridimensionale sunt prezentai n
continuare.
Etapa

Instruciuni

1.Pregtirea datelor

Z = peaks(20);

2. Selectarea ferestrei
grafice i poziionarea
graficului n fereastr
3. Apelarea unei funcii de
plotare 3-D
4a. Setarea unei hri de
culori i a unui algoritm
de umbrire

figure(1)
subplot(2,1,2)

4b. Adugarea unei


iluminri

light('Position',[-2,2,20])
lighting phong
material([0.4,0.6,0.5,30])
set(h,'FaceColor',[0.7 0.7 0],...
'BackFaceLighting','lit')

5. Setarea unui punct de


vizualizare

view([30,25])
set(gca,'CameraViewAngleMode','Manual')

h = surf(Z);
colormap hot
shading interp
set(h,'EdgeColor','k')

6. Setarea limitelor axelor axis([5 15 5 15 -8 8])


set(gca'ZTickLabel','Negative||Positive')
i a marcajelor
7. Setarea
proporionalitii

set(gca,'PlotBoxAspectRatio',...
[2.5 2.5 1])

8. Completarea graficului xlabel('X Axis')


Axis')
cu etichete, legend, text ylabel('Y
zlabel('Function Value')
title('Peaks')

9. Operaiuni de tiprire

set(gcf,'PaperPositionMode','auto')
print -dps2

75

Reprezentarea unei matrice ca o suprafa


MATLAB-ul definete o suprafa prin coordonatele z ale punctelor de deasupra unui caroiaj
dreptunghiular n planul x-y. Graficul este format prin unirea punctelor adiacente cu linii drepte.
Plotrile de suprafee sunt utile pentru vizualizarea matricilor care sunt prea mari pentru a fi afiate
n form numeric i pentru trasarea graficelor funciilor de dou variabile.
MATLAB-ul poate crea diferite forme de trasare a suprafeelor:
Funcie

Utilizare

mesh, surf

Trasare a unei suprafee

meshc, surfc

Trasarea suprafeei, inclusiv conturul

meshz

Trasarea suprafeei, inclusiv planul de referin

pcolor
surfl

Plotare plan a suprafeei (valorile sunt proporionale doar cu culoarea)


Trasarea suprafeei luminat din direcia specificat

surface

Funcie de nivel sczut pentru crearea unor obiecte tip grafice suprafa

Grafice realizate cu mesh i surf


Comenzile mesh i surf genereaz suprafee 3-D din datele provenite de la matrici. Dac Z
este o matrice pentru elementele creia Z(i,j) se definete nlimea unei suprafee peste un
caroiaj (i,j) atunci
mesh(Z)

genereaz o imagine colorat, caroiat a suprafeei i o afieaz n vedere 3-D.


Similar,
surf(Z)

genereaz o imagine colorat, continu a suprafeei i o afieaz n vedere 3-D.


n cazul comenzii mesh se pot folosi comenzi de tipul shading pentru eliminarea liniilor de
tip mesh (shading flat) sau pentru interpolarea umbririlor de-a lungul faetelor suprafeei
(shading interp).
Vizualizarea funciilor de dou variabile
Primul pas care trebuie parcurs pentru trasarea graficului unei funcii de dou variabile, z =
f(x,y), este de a genera matricile X i Y care definesc domeniul n care va fi vizualizat funcia. Apoi
se utilizeaz aceste matrici pentru evaluare i trasarea graficului funciei.
Funcia meshgrid transform domeniul specificat prin doi vectori, x i y, n matricile X i Y.
Liniile matricei X sunt copii ale vectorului x i coloanele matricei Y sunt copii ale vectorului y.
Pentru a vedea cum se folosete meshgrid, vom considera funcia sin(r)/r (numit funcia
sinc). Pentru a evalua funcia ntre -8 i 8 i pentru x i pentru y, este necesar doar un argument de
tip vector pentru meshgrid, care va fi utilizat n ambele direcii:
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;

Matricea R conine distanele de la centru (originea), iar eps este adugat pentru a evita
mprirea la zero.
76

Acum se poate forma funcia sinc i se poate realiza plotarea cu mesh.


Z = sin(R)./R;
mesh(Z)

Se poate realiza o mbuntire a reprezentrii grafice n condiiile utilizrii acelorai date, prin
folosirea unor faciliti de iluminare i ajustare a imaginii (daspect, axis, camlight,
view).
Exemplu:
surf(X,Y,Z,'FaceColor','interp','EdgeColor','none',...
'FaceLighting','phong')
daspect([5 5 1]);axis tight;view(-50,30);camlight left

Harta culorilor
Fiecare fereastr grafic MATLAB are asociat o hart a culorilor (colormap), care este o
matrice cu trei coloane a cror lungime este egal cu numrul de culori definite. Fiecare linie a
matricii definete o culoare particular prin specificarea a trei valori n domeniul 0 1. Aceste
valori definesc componentele RGB (red, green, blue) (adic intensitile componentelor video rou,
verde i albastru). Funcia colormap fr argumente returneaz harta figurii curente.
77

Funcia colorbar afieaz n fereastra grafic harta curent a culorilor, sub forma unei bare
aezate lng grafic. Exemplu:
[x,y] = meshgrid([-2:.2:2]);Z = x.*exp(-x.^2-y.^2);
surf(x,y,Z,gradient(Z));colorbar

8.2. Handle Graphics i Interfee Grafice n MATLAB (GUI)

Crearea i manipularea graficelor n MATLAB se realizeaz cu ajutorul unui sistem de


grafic orientat pe obiecte denumit Handle Graphics. Acest sistem furnizeaz componentele
necesare generrii unor grafice: comenzi de trasare a liniilor, textelor, grafice 3-D, poligoane etc.
precum i instrumente interactive de tipul meniurilor, butoanelor, ferestre de dialog etc.

Cu Handle Graphics se pot manipula direct elementele grafice (aa cum o fac funciile
MATLAB de nivel nalt descrise n paragraful anterior) pe dou ci: fie de la linia de comand
MATLAB fie cu ajutorul unor fiiere MATLAB create special.
8.2.1. Graficele privite ca obiecte. Ierarhia obiectelor
Obiectele grafice sunt de fapt elementele grafice de baz utilizate de MATLAB pentru afiarea
datelor i pentru crearea Interfeelor Grafice Utilizator (Graphical User Interfaces - GUI). Fiecare
stare a unui obiect este asociat unui identificator unic numit handle, care poate fi folosit pentru
manipularea caracteristicilor obiectului respectiv (caracteristici care sunt numite proprietile
obiectului).
Obiectele grafice sunt structurate ntr-o ierarhie pe trei nivele:

Ierarhia este bazat pe interdependenele dintre diferitele obiecte grafice. De exemplu, pentru
trasarea unui obiect linie, MATLAB utilizeaz un obiect de tip axe pentru orientarea i furnizarea
unui sistem de referin liniei. Obiectul de tip axe are nevoie la rndul su de o fereastr grafic
pentru afiarea liniei.

78

Obiectele grafice sunt interdependente i prin urmare un ecran grafic conine o mare varietate de
obiecte care mpreun furnizeaz o imagine sau un grafic care are o semnificaie clar. Pentru
exemplificare se poate analiza urmtoarea fereastr grafic, fereastr care conine mai multe obiecte
grafice.

Fiecare tip de obiect grafic are o funcie generatoare corespunztoare, funcie care este utilizat
pentru crearea unui obiect din clasa respectiv de obiecte. Funciile de generare a obiectelor au
aceleai nume ca i obiectele pe care le creeaz (funcia text pentru obiecte de tip text, funcia
figure pentru obiecte de tip figur etc.).
Tipurile de obiecte grafice sunt descrise pe scurt n continuare.
Rdcina (Root)
n fruntea ierarhiei este obiectul rdcin, care corespunde cu ecranul calculatorului. Acest
obiect nu trebuie creat, el exist, este unic i toate celelalte obiecte sunt descendenii acestuia. Se
pot modifica anumite proprieti ale obiectului rdcin.
Obiectele figur (Figure)
Obiectele de tip figur sunt ferestre individuale pe ecranul rdcin pe care MATLAB-ul
afieaz graficele. Nu exist limit pentru numrul de ferestre grafice (dect cele datorate limitelor
calculatorului). Toate obiectele figur sunt copii ai rdcinii i celelalte obiecte grafice sunt
descendeni ai figurilor.
Obiectele de tip Uicontrol
Obiectele Uicontrol sunt elemente de control ale interfeei utilizator care execut subrutine
de apel atunci cnd utilizatorul activeaz un obiect. Exist mai multe stiluri de control cum ar fi
butoane, liste etc. Fiecare astfel de instrument este proiectat s accepte un anumit tip de informaie
79

de la utilizator. De exemplu, listele sunt de obicei folosite pentru pentru furnizarea unei liste de
nume, din care utilizatorul poate selecta unul sau mai
multe articole.
Meniurile
pop-up permit alegerea dintre
Obiectele Uicontrol pot fi utilizate n diferite combinaii pentru construirea unor ecrane de
mai multe articole predefinite
control i a unor ferestre de dialog. n exemplul urmtor sunt prezentate astfel de combinaii:
meniuri pop-up, ferestre de tip text editabile, ferestre de verificare (check boxes), butoane, text
static, cadre etc.

Utilizatorul poate introduce valori


numerice n astfel de ferestre de tip text
editabile

Obiectele Uicontrol sunt copiii obiectelor de tip


figur i de
suntverificare
independente
de boxes)
obiectele de tip
Ferestrele
(check
axe.
indic alegerea fcut de utilizator
Obiectele de tip Uimenu
Obiectele Uimenu sunt meniuri pull-down care execut rutine de apelare atunci cnd
utilizatorul selecteaz un articol individual dintr-un meniu. MATLAB-ul plaseaz obiectele Uimenu
Cadrele existente
realizeaz
grupri
pe bara de meniuri a ferestrei grafice, la dreapta meniurilor
definite
de logice
sistem. pentru
Imaginea urmtoare arat partea de sus a unei figuri
MS-Windows
care are definite trei meniuri
diverse
tipuri de comenzi
de top Uimenu (intitulate Workspace, Figure, i Axes). Dou niveluri de submeniuri sunt vizibile n
Textele statice permit etichetarea
meniul Workspace.

diverselor tipuri de controale


Butoanele indic o anumit aciune

Obiectele Uimenu sunt descendente directe ale obiectelor de tip figur i deci sunt independente
de axe.
Obiectele de tip axe (Axes)
Obiectele de tip axe definesc o regiune ntr-o fereastr de tip figur i orienteaz descendenii
lor spre aceast regiune. Obiectele de tip axe sunt copiii obiectelor de tip figur i sunt prinii
obiectelor de tip imagine, luminozitate, linie, patch, suprafa i text.
Toate funciile care traseaz grafice (plot, surf, mesh, bar etc.) creeaz un obiect de
tip axe dac nu exist deja unul.
Uicontrol i Uimenu nu sunt descendeni ai obiectelor de tip axe.
Obiectele de tip Imagine (Image)
O imagine n MATLAB const ntr-o matrice de date i o hart a culorilor. Exist trei tipuri de
baz de imagini care difer n funcie de modul n care elementele matricii de date sunt interpretate
ca pixeli color indexai, intensitate i truecolor.
Obiectele de tip lumin (luminozitate) (Light)
Aceste obiecte definesc surse de lumin care influeneaz toate obiectele de tip patch i
suprafa dintre axe. Se pot seta proprietile care determin tipul sursei de lumin, culoarea,
localizarea i altele.

80

Obiectele de tip linie (Line)


Obiectele de tip linie sunt elemente grafice de baz care sunt folosite pentru a genera cele mai
multe plotri 2-D i unele 3-D. Funciile de nivel nalt plot, plot3, loglog etc. genereaz
obiecte de tip linie. Sistemul de coordonate al obiectului printe obiectul de tip axe poziioneaz
i orienteaz linia.
Obiectele de tip Patch
Aceste obiecte sunt contururi poligonale cu muchii (laturi), umplute. Un singur obiect patch
poate conine mai multe fee, fiecare colorat independent. Funciile fill, fill3, contour3
creeaz obiecte patch. Ca i n cazul liniei, sistemul de coordonate al obiectului printe (axele)
poziioneaz i orienteaz obiectul patch.
Obiectele de tip dreptunghi (Rectangle)
Aceste obiecte sunt arii 2-D umplute, cu o form care poate varia de la un dreptunghi la o elips.
Obiectele de tip suprafa (Surface)
Obiectele de tip Surface sunt reprezentri 3-D ale matricilor de date create prin plotarea fiecrui
element al matricii ca o nlime deasupra planului x-y. MATLAB-ul poate trasa suprafee pline,
colorate sau doar o reea de linii (mesh) care conecteaz punctele respective. Sistemul de
coordonate al axelor poziioneaz i orienteaz obiectul de tip suprafa. Funciile de nivel nalt
pcolor, surf, mesh genereaz obiecte de tip suprafa.
Obiectele de tip Text
Obiectele de tip text sunt de fapt iruri de caractere. Sistemul de coordonate al axelor
poziioneaz textul. Funciile de nivel nalt title, xlabel, ylabel, zlabel, gtext
genereaz obiecte de tip text.
8.2.2. Proprietile obiectelor grafice
Proprietile obiectelor grafice determin aspectul i comportamentul acestora. Proprietile
includ informaii generale (tipul obiectului, printe, copii, dac obiectul este vizibil etc.) i
informaii specifice unei anumite clase particulare de obiecte.
MATLAB-ul organizeaz informaiile ntr-o ierarhie i salveaz aceste informaii n
proprieti ale obiectelor. De exemplu, proprietile rdcinii conin identificatorul (handle) figurii
curente i locaia curent a pointerului (cursorului), proprietile figurii conin liste cu descendenii
i evenimentele din fereastr, proprietile axelor conin informaii despre cum fiecare din obiectele
copil folosete harta culorilor etc.
Valoarea curent a oricrei proprieti poate fi aflat, iar unele valori pot fi modificate.
Valoarea unei proprieti este aplicat numai unui obiect particular i nu ntregii clase de obiecte. Se
pot seta valori implicite care s fie valabile pentru toate obiectele create ulterior.
Anumite proprieti sunt comune tuturor obiectelor grafice:
Proprietate
BusyAction
ButtonDownFcn
Children
Clipping
CreateFcn
DeleteFcn
HandleVisibility

Informaii coninute
Controleaz modul n care MATLAB-ul apeleaz rutinele de ntreruperi
definite pentru un anumit obiect.
Rutin executat la apsarea unui buton.
Manipuleaz toate obiectele copil ale obiectului.
Activare/dezactivare mod tiere.
Rutin executat atunci cnd acest tip de obiect este creat.
Rutin executat atunci cnd se d o comand de distrugere (tergere) a
obiectului.
Permite controlul obiectului de la linia de comand sau din rutine de
apelare.
81

Interruptible
Parent
Selected
SelectionHighlight
Tag
Type
UserData
Visible

Determin cnd o rutin poate fi ntrerupt printr-o rutin invocat


ulterior.
Printele obiectului.
Indic dac obiectul este selectat.
Specific dac este indicat starea de selectare.
Etichet a unui obiect specificat de utilizator.
Tipul obiectului (figur, linie, text etc.)
Orice dat care se dorete a fi asociat obiectului.
Determin dac obiectul este vizibil sau nu.

8.2.3. Funcii de generare a obiectelor grafice


Fiecare obiect grafic, mai puin rdcina, are o funcie de generare corespondent:
Funcie

Descriere obiect
Sistem de coordonate carteziene care scaleaz i orienteaz obiectele
copil: imagine, lumin, linie, patch, suprafa i text.
figure
Fereastr pentru afiare grafic.
image
Imagine 2-D definit prin indicarea hrii culorilor sau valori RGB.
Datele pot fi pe 8 bii sau dubl precizie.
light
Surs direcionat de lumin, localizat ntre axe, care influeneaz
suprafeele i obiectele patch.
line
Linie format prin conectarea coordonatelor prin segmente drepte ntr-o
secven specificat.
patch
Form poligonal creat prin interpretarea fiecrei coloane din matricile
de coordonate ca un poligon separat.
rectangle
Arie 2-D umplut (plin), cu form de la dreptunghi la elips.
surface
Suprafa cu fee dreptunghiulare, definite prin interpretarea elementelor
matricei ca nlimi deasupra planului.
text
ir de caractere localizat n sistemul de coordonate al axelor.
uicontextmenu
Meniu context ce poate fi asociat cu alt obiect grafic.
uicontrol
Interfa utilizator programabil (butoane, liste etc.).
uimenu
Meniu programabil care apare n partea superioar a figurii.
Toate funciile de generare a obiectelor au un format similar
:
axes

handle=function('propertyname',propertyvalue,...)

Exemplu de generare a obiectelor grafice


n exemplul urmtor este evaluat o funcie matematic i sunt create trei obiecte grafice
folosind valorile proprietilor specificate ca argumente ale comenzilor figure, axes i
surface, celelalte proprieti avnd valori implicite.
[x,y] = meshgrid([-2:.4:2]);
Z = x.*exp(-x.^2-y.^2);
fh=figure('Position',[350 275 400 300],'Color','w');
ah=axes('Color',[.8 .8 .8],'XTick',[-2 -1 0 1 2],...
'YTick',[-2 -1 0 1 2]);
sh = surface('XData',x,'YData',y,'ZData',Z,...
'FaceColor',get(ah,'Color')+.1,...
'EdgeColor','k','Marker','o',...
'MarkerFaceColor',[.5 1 .85]);

82

Funcia surface nu folosete o vedere 3-D ca funcia de nivel nalt surf. Se poate schimba
vederea ntr-una 3-D cu camera commands sau cu comanda view:
view(3)

9. PREZENTAREA TOOLBOX-URILOR MATLAB


MATLAB permite dezvoltarea unei familii de aplicaii sub forma toolbox-urilor. Aceste
toolbox-uri permit nvarea i aplicarea tehnologiilor specializate din diverse domenii. Sunt
disponibile toolbox-uri pentru domenii cum ar fi: procesarea numeric a semnalelor, sisteme de
conducere automat, reele neurale, logic fuzzy, wavelet, simulare (SIMULINK), identificare,
statistic, crearea de hri, procesarea imaginilor, etc. n continuare sunt prezentate pe scurt
facilitile oferite de cteva din aceste toolbox-uri.
9.1. Toolbox-ul Comunicaii (Communications Toolbox)
Communications Toolbox este o colecie de funcii de calcul i blocuri de simulare pentru
cercetare, dezvoltare, proiectarea de sisteme i simulare n domeniul comunicaiilor. Toolboxul este
proiectat att pentru experi ct i pentru nceptori n domeniu, i se bazeaz pe MATLAB i
Simulink.
Funcii disponibile:
Surse de date
Surse codare/decodare
Controlul erorilor de codificare
83

Modulare/demodulare
Filtre transmisie/recepie
Canale de transmisie
Acces multiplu
Sincronizare
Utilitare
9.2. Toolbox-ul pentru Sisteme de Conducere Automat (Control System)
MATLAB-ul dispune de o colecie bogat de funcii utile att inginerului automatist practician
ct i teoreticianului din domeniul teoriei sistemelor. Printre facilitile oferite enumerm: aritmetic
complex, valori proprii, gsirea rdcinilor, inversri de matrici, Transformarea Fourier Rapid etc.
Toolbox-ul Control System folosete structurile matriceale ale MATLAB i reprezint fundaia
MATLAB. Toolbox-ul este o colecie de algoritmi (n principal sub forma fiierelor .m), care
implementeaz proiectarea sistemelor de conducere, precum i tehnici de analiz i modelare.
Sistemele pot fi modelate n MATLAB ca funcii de transfer, sub forma poli-zerouri sau prin
reprezentarea de stare, ceea ce permite aplicarea tehnicilor clasice i a celor moderne. Se poate lucra
cu sisteme continue i cu sisteme discrete i pot fi efectuate conversii ntre diversele tipuri de
modele. Toolbox-ul permite calculul i trasarea rspunsurilor n domeniul timp i domeniul
frecven, precum i a locului rdcinilor. De asemenea, se pot realiza alocri de poli, se pot
implementa conducerea optimal i estimatoare etc.
9.3. Toolbox-ul pentru Baze de Date (Database Toolbox)
Toolbox-ul Baze de Date permite importul i exportul de date ntre MATLAB i cele mai
rspndite programe de baze de date. Cu acest toolbox se pot importa date din exterior, se utilizeaz
capacitile mari de calcul i prelucrare analitic ale MATLAB, i se export rezultatele napoi n
baza de date sau n alt baz de date.
Realizarea acestor operaiuni se face astfel: toolbox-ul Database conecteaz MATLAB la o
baz de date utiliznd funciile MATLAB; datele sunt preluate de la baza de date ca i caractere,
sunt transformate n tipuri de date corespunztoare i sunt stocate n tablouri de tip celul. n acest
moment se pot folosi instrumentele MATLAB de lucru cu date. Se pot include funciile toolbox-ului
n fiiere M-files. Pentru exportul datelor se utilizeaz n final funciile specializate MATLAB.
Toolbox-ul Database este furnizat mpreun cu interfaa grafic Visual Query Builder (VQB).
9.4. Toolbox-ul de Procesare a Semnalelor (Signal Processing Toolbox)
Toolbox-ul de Procesare a Semnalelor este o colecie de instrumente construit n mediul de
calcul numeric MATLAB. Toolbox-ul permite o mare varietate de operaii de prelucrare a
semnalelor, de la forme de und la proiectarea filtrelor, modelare parametric i la analiza spectral.
Toolbox-ul furnizeaz dou categorii de instrumente:
Funcii de prelucrare a semnalelor de la linia de comand
Intefee grafice utilizator pentru:
- Proiectarea interactiv a filtrelor
- Trasarea i analiza semnalelor
- Analiz spectral
- Aplicarea de filtre semnalelor
- Analiza filtrelor
9.5. Toolbox-ul DSP Blockset
Setul de blocuri de procesare numeric a semnalelor (DSP Blockset) este o colecie de
biblioteci de blocuri care se utilizeaz cu pachetul Simulink.
Bibliotecile DSP Blockset sunt proiectate special pentru prelucrarea numeric a semnalelor i includ
faciliti cum ar fi filtrarea clasic, adaptiv, manipulri de matrici, algebr liniar, statistic, etc.
DSP Blockset extinde mediul Simulink prin furnizarea de componente i algoritmi pentru
sistemele DSP. Faciliti:
Operaiuni bazate pe cadre
Suport matriceal
Filtrare adaptiv i cu eantionare multipl
84

Operaiuni statistice
Algebr liniar
Estimarea parametrilor
Faciliti de timp real
9.6. Toolbox-ul Finane (Financial Toolbox)
MATLAB-ul mpreun cu toolbox-ul de Finane furnizeaz un mediu de calcul integrat i
complet pentru analiz i inginerie financiar. Toolbox-ul dispune de instrumente de analiz
matematic i statistic a datelor financiare i instrumente de prezentare grafic a rezultatelor
obinute.
Faciliti:
Calcul i analiz de pre i de producie
Realizeaz analize venituri, preuri etc. compatibile SIA (Securities Industry Association)
Analiza i managementul portofoliilor
Proiectarea i evaluarea de strategii financiare
Identificarea, msurarea i controlul riscului
Analiza i calculul fluxului de cash
Analiza i predicia activitii economice
Crearea de instrumente financiare structurate
Cercetare academic
9.7. Toolbox-ul de Procesare a Imaginilor (Image Processing Toolbox)
Toolbox-ul Image Processing este o colecie de funcii care extind posibilitile MATLAB din
domeniul prelucrrii imaginilor. Toolbox-ul dispune de o mare varietate de operaiuni de prelucrare
a imaginilor, cum ar fi:
Operaii geometrice
Operaii de tip vecintate
Filtrare liniar i proiectarea filtrelor
Transformate
Analiza i mbuntirea imaginilor
Operaii binare
Operaii asupra regiunii de interes
Multe dintre funciile toolbox-ului sunt fiiere M-files care constau n instruciuni MATLAB
care implementeaz algoritmi specializai de prelucrare a imaginilor. Aceste instruciuni pot fi
vizualizate cu comanda cunoscut:
type function_name
Posibilitile toolbox-ului pot fi extinse prin crearea de fiiere proprii prin utilizarea funciilor
disponibile n combinaie cu alte toolbox-uri cum ar fi Signal Processing Toolbox i Wavelet
Toolbox.
9.8. Toolbox-ul Optimizare (Optimization Toolbox)
Acest toolbox este o colecie de funcii care includ rutine pentru o mare diversitate de
optimizri:
Minimizare neliniar fr constrngeri
Minimizare neliniar cu constrngeri, inclusiv probleme de tip minimax i probleme de
minimizare semi-infinit
Programare liniar i ptratic
Algoritmi neliniari de tipul celor mai mici ptrate
Rezolvarea de sisteme de ecuaii neliniare
Sunt disponibili i algoritmi specializai pentru sisteme mari (large-scale problems). Funciile
toolbox-ului pot fi utilizate n combinaie cu alte toolbox-uri sau cu Simulink.
9.9. Toolbox-ul pentru Sisteme de Putere (Power System Blockset)
Sistemele electrice de putere sunt combinaii de circuite electrice i de aparate electro-mecanice
cum ar fi motoarele i generatoarele. Inginerii care lucreaz n acest domeniu trebuie s
mbunteasc performanele sistemelor de putere. Cerinele de cretere drastic a eficienei au
85

determinat proiectanii s foloseasc aparatur electronic i sisteme sofisticate de conducere care


necesit instrumente de analiz i proiectare corespunztoare, fiind absolut necesar nelegerea
fenomenelor (neliniare) prin simulare.
Power System Blockset a fost proiectat pentru furnizarea unor instrumente de proiectare care
permit inginerilor s construiasc rapid i uor modele care simuleaz sistemele de putere. Blocurile
utilizeaz mediul Simulink i permit construirea unui model cu proceduri simple de tip click and
drag. Se poate trasa rapid topologia circuitelor electrice i de asemenea se poate face o analiz a
circuitelor care include interaciunile cu sistemele mecanice, termice, de control.
Bibliotecile conin modele ale aparaturii tipice pentru sistemele de putere, cum ar fi
transformatoare, linii electrice, motoare, electronic de putere etc. Posibilitile toolbox-ului pot fi
testate prin rularea fiierelor demonstrative.
9.10. Toolbox-ul Stateflow (Diagrame de stare)
Stateflow este un produs multiplatform, care poate rula pe sisteme Microsoft Windows 95,
Windows NT i UNIX, i care necesit MATLAB + Simulink.
Stateflow este un instrument grafic de proiectare i dezvoltare pentru sisteme de conducere
complexe i pentru sisteme logice de supervizare. Cu ajutorul acestui toolbox se pot genera modele
sub forma unor diagrame de stare dinamice ale unui sistem. Generarea de cod pentru elementele
Simulink ale unui model Stateflow necesit pachetul suplimentar al Simulink-ului Real-Time
Workshop.

9.11. Toolbox-ul de Statistic (Statistics Toolbox)


Toolbox-ul de Statistic dispune de instrumente care permit executarea de sarcini statistice
uzuale, de la generarea de numere aleatoare pn la proiectarea de experimente statistice i
controlul proceselor statistice.
Exist dou categorii de instrumente:
Construcia de funcii statistice i probabilistice
Instrumente grafice interactive
Prima categorie const n funcii care pot fi apelate din linia de comand sau din aplicaii
proprii.
A doua categorie const n instrumente interactive care permit accesul la funcii prin
intermediul unei interfee grafice utilizator (GUI), care furnizeaz un mediu adecvat pentru funcii
de predicie, interpolare, probabilistice etc.
9.12. Toolbox-ul pentru Calcul Simbolic (Symbolic Math Toolbox)
Acest toolbox completeaz facilitile grafice i numerice ale MATLAB-ului cu diverse alte
tipuri de faciliti matematice, care permit efectuarea de calcule simbolice.
Maina de calcul utilizat este nucleul de la Maple. Exist de fapt dou toolbox-uri: unul de
baz, care este o colecie de peste o sut de funcii MATLAB care permit accesul la Maple, i un
toolbox extins care permite accesul extins la multiple pachete Maple (non-grafice, faciliti de
programare, proceduri utilizator etc.)
Faciliti:
86

o Calcul matematic:

Diferenieri, integrri, limite, sume, serii Taylor

o Algebr liniar:

Inverse, determinani, valori proprii, forme canonice


ale matricilor

o Simplificri:

Metode de simplificare a expresiilor algebrice

o Soluionarea ecuaiilor:
o Aritmetic cu precizie
variabil:
o Transformri:
o Funcii matematice
speciale:

Soluii simbolice i numerice ale ecuaiilor algebrice i


difereniale
Evaluarea numeric a expresiilor matematice cu precizie
specificat

Fourier, Laplace, Transformarea z i inversele lor


Funcii speciale ale matematicilor aplicate clasice

10. PACHETUL DE MODELARE I SIMULARE SIMULINK


SIMULINK este un pachet software pentru modelarea, simularea i analiza sistemelor
dinamice. Pot fi modelate sisteme liniare i neliniare, continue, discrete, hibride, cu mai multe
perioade de eantionare.
SIMULINK furnizeaz o interfa grafic utilizator (GUI) pentru crearea modelelor sub
forma unor diagrame construite din blocuri, pe baza unor tehnici de tip click-and-drag realizate
cu mouse-ul. Astfel, trasarea diagramelor este simpl i intuitiv, aproape la fel de simpl ca
trasarea acestor diagrame direct pe hrtie. n plus, se evit formularea matematic laborioas
(sistemele dinamice sunt de regul descrise de ecuaii difereniale sau cu diferene).

SIMULINK dispune de o bibliotec vast de surse, receptoare, componente liniare i


neliniare, conectori etc. pe baza crora se pot trasa diagrame i construi blocuri proprii.

Modelele realizate n SIMULINK sunt ierarhice. Se poate vizualiza modelul de nivel


nalt, iar la efectuarea unui dublu click pe blocul respectiv se coboar nivel dup nivel astfel
nct se pot observa toate detaliile de construcie i de organizare ale modelului.

Dup crearea unui model se pot realiza simulri apelnd la diverse metode de integrare
din meniurile SIMULINK i/sau utiliznd comenzi MATLAB. Prin utilizarea unor blocuri de tip
osciloscop sau diverse dispozitive de afiare se pot observa rezultatele chiar n timpul simulrii.
De asemenea se pot schimba valorile unor parametri i se poate observa imediat efectul acestor
modificri. Rezultatele obinute se pot transporta n workspace-ul MATLAB pentru prelucrri i
vizualizri ulterioare.

10.1. Rularea unui model SIMULINK demonstrativ


Rularea modelului
Pentru a analiza modul de lucru cu SIMULINK se poate apela la rularea unor programe
(modele) demonstrative.
Unul din programele demo este modelul termodinamic al unei case. Pentru rularea
programului, trebuie parcuri urmtorii pai:
1. Se starteaz MATLAB.
2. Se ruleaz demonstraia tastnd thermo n fereastra de comand MATLAB sau se tasteaz
comanda demo i se alege programul demonstrativ din meniul care apare. Aceste comenzi starteaz
SIMULINK i creeaz o fereastr model care conine modelul respectiv.
87

La deschiderea modelului (extensiile fiierelor SIMULINK sunt .mdl) SIMULINK-ul deschide


un bloc de tip osciloscop cu dou ecrane (temperatur interioar/exterioar - Indoor vs. Outdoor
Temp. i costul nclzirii - Heat Cost ($)).
3. Pentru startarea simulrii se activeaz meniul Simulation i se alege comanda Start command
(sau se activeaz direct butonul Start din bara de instrumente). O dat cu startarea simulrii sunt
plotate evoluiile temperaturii interioare i exterioare, ca i costul cumulat al nclzirii.
4. Pentru oprirea simulrii se alege comanda Stop din meniul Simulation (sau butonul Pause din
bara de instrumente).
5. Atunci cnd se dorete terminarea rulrii programului se nchide modelul alegnd Close din
meniul File.
Descrierea modelului
Programul modeleaz sistemul termodinamic al unei case folosind o reprezentare simpl.
Temperatura de referin este setat la 70 grade Fahrenheit (aprox. 21 grade Celsius). Temperatura
din cas este influenat de temperatura exterioar, care poate fi variat sub form sinusoidal
(amplitudine 15 grade F, temperatura de baz 50 grade F), variaie care simuleaz fluctuaiile
temperaturii din exterior din timpul zilei.
Sunt utilizate subsisteme care fac modelul simplu i configurabil (un subsistem este un bloc
alctuit dintr-un grup de blocuri conectate). Modelul conine 5 subsisteme: Thermostat, House i
trei Convertoare de temperatur (Temp Convert), din care 2 convertesc Fahrenheit n Celsius i unul
Celsius n Fahrenheit.
Efectuarea unui dublu click pe blocul House permite vizualizarea blocurilor componente ale
subsistemului.

88

Subsistemul Thermostat este de tip releu i determin pornirea sau oprirea sistemului de
nclzire. Se pot vedea blocurile componente la efectuarea unui dublu click pe subsistem.

Subsistemele de conversie a temperaturii au o structur asemntoare:

Alte demonstraii
Din fereastra bibliotecilor SIMULINK pot fi rulate i alte demonstraii care pun n eviden
diverse concepte i tehnici de modelare din diverse domenii. Pentru rularea din fereastra
bibliotecilor SIMULINK se procedeaz astfel:
1. Se tasteaz simulink3 n fereastra de comand MATLAB; va apare fereastra bibliotecilor
SIMULINK.
2. Se execut dublu click pe icon-ul Demos. Va apare fereastra demo a MATLAB-ului, care
conine cteva modele SIMULINK interesante.
10.2. Crearea modelelor SIMULINK
Tehnica de creare a unor modele SIMULINK poate fi ilustrat cel mai bine prin exemple.
Modelul prezentat n continuare integreaz un sinus i afieaz att rezultatul ct i unda
sinusoidal de la intrare. Schema bloc a modelului este urmtoarea:

Pentru a genera modelul se tasteaz mai nti simulink n fereastra de comand MATLAB. Pe
sistemele de operare de tip Windows va apare Browser-ul bibliotecilor SIMULINK.

89

Pe sistemele UNIX, va apare fereastra bibliotecilor SIMULINK.

Pentru a genera un model nou pe sisteme UNIX se selecteaz Model din submeniul New al
meniului File. Pe sisteme Windows se selecteaz butonul New Model din bara de instrumente a
Browser-ului de Biblioteci.

Simulink va deschide o fereastr pentru un model nou.

90

Pentru construcia modelului vor fi necesare blocuri din urmtoarele biblioteci Simulink:

Biblioteca de surse (blocul Sine Wave)

Biblioteca de receptoare (blocul Scope)

Biblioteca de sisteme continue (blocul Integrator)

Biblioteca Signals & Systems (blocul Mux)

Pentru copierea blocului Sine Wave se utilizeaz Browser-ul de bibiloteci: nti se expandeaz
arborele de biblioteci (prin click pe nodul Simulink i apoi click pe nodul surse) astfel nct s fie
afiate blocurile din biblioteca de surse. Apoi se selecteaz blocul Sine Wave (click).
Fereastra Browser-ului de biblioteci va arta astfel:

La pasul urmtor se trage (innd apsat butonul din stnga al mouse-ului) blocul Sine Wave
din browser i i se d drumul n fereastra modelului. Simulink va face o copie a blocului Sine Wave
n punctul indicat.
Se poate proceda asemntor pentru copierea blocului Sine Wave din biblioteca de surse
deschis din fereastra de biblioteci Simulink (pe sisteme Windows se poate deschide fereastra de
biblioteci din Browser prin click din butonul drept al mouse-ului i apoi click pe Open Library).

91

Ca i n cazul utilizrii browser-ului se trage blocul Sine Wave din biblioteca de surse n
fereastra modelului (drag and drop):

Se procedeaz n mod asemntor i cu copierea celorlalte blocuri din bibliotecile


corespunztoare n fereastra modelului. Se poate deplasa cu uurin orice bloc prin tragerea cu
mouse-ul sau prin selectare i deplasare cu tastele sgei.
Dup copierea tuturor blocurilor necesare n fereastra de lucru, modelul trebuie s arate ca n
figura urmtoare:

La o examinare atent a simbolurilor de reprezentare a blocurilor se vor observa sgei care


indic intrrile sau ieirile din blocuri: dac simbolul > este orientat spre ieirea blocului atunci
este un port de ieire (output port) iar dac simbolul este ndreptat spre bloc este un port de intrare
(input port). Un semnal circul de la un port de ieire al unui bloc spre un port de intrare al altui
bloc printr-o linie de conectare, Atunci cnd blocurile sunt conectate, simbolurile porturilor dispar.

92

Pentru conectarea blocurilor se trece nti la conectarea blocului Sine Wave la prima intrare (de
sus) a blocului Mux. Pentru aceasta se poziioneaz pointerul mouse-ului deasupra portului de ieire
al blocului Sine Wave. n acest moment forma pointerului se schimb i devine de tip cruce
(cursor).

Se ine apsat butonul stnga al mouse-ului i se deplaseaz cursorul pn la intrarea de sus a


blocului Mux.

Urmeaz eliberarea butonului mouse-ului i se observ cum blocurile au fost conectate.

n afara liniilor care conecteaz ieirile unor blocuri la intrrile altora exist i linii de branare
a unor linii la intrrile unor blocuri (se poate observa n modelul prezentat iniial). O astfel de linie
este utilizat pentru conectarea ieirii din blocul Sine Wave i la blocul Integrator (exist deja
conexiunea la blocul Mux).
Pentru a efectua aceast conexiune se procedeaz astfel:
1. Se poziioneaz pointerul pe linia dintre blocurile Sine Wave i Mux.

2. Se apas i se ine apsat tasta Ctrl. Se apas butonul mouse-ului i apoi se trage pn la
intrarea n blocul Integrator sau pn deasupra acestui bloc.

93

3. Se elibereaz butonul mouse-ului i se observ cum apare o linie de branare pn la portul de


intrare n blocul Integrator.

Se procedeaz conform indicaiilor i se efectueaz toate conectrile necesare. Modelul va


trebui s arate n final astfel:

10.3. Rularea simulrilor n SIMULINK


Dup ncheierea procedurii de construcie a modelului, trebuie rulat o simulare pentru
aprecierea corectitudinii modelului i pentru obinerea rezultatelor cerute.
Pentru aceasta se deschide mai nti blocul osciloscopului (Scope), pentru a vizualiza evoluia
mrimilor modelului. Pstrnd fereastra osciloscopului deschis se va seta Simulink pentru rularea
unei simulri timp de 10 secunde. Pentru aceasta, parcurgem urmtorii pai:
1. Setm parametrii simulrii prin alegerea submeniului Parameters din meniul Simulation. n
fereastra de dialog care apare vom seta parametrul Stop time la 10.0 (valoare implicit).
2. nchidem fereastra de dialog Simulation Parameters prin click pe butonul Ok. Simulink va
aplica parametrii i va nchide fereastra de dialog.

94

3. Se selecteaz Start din meniul Simulation i se observ curbele afiate n fereastra


osciloscopului.

4. Simularea se va opri atunci cnd se ajunge la finalul timpului de rulare indicat n fereastra de
dialog Simulation Parameters sau la selectarea opiunii Stop din meniul Simulation (sau din bara
de instrumente).
Pentru salvarea modelului se alege Save din meniul File i se introduce un nume de fiier i se
alege directorul unde dorim s salvm modelul (fiierul va avea automat extensia .mdl).
Pentru ncheierea lucrului se selecteaz Exit MATLAB sau se tasteaz quit n fereastra de
comand a MATLAB-ului.
10.4. Modul de lucru al unui program SIMULINK
Fiecare bloc dintr-un model Simulink are urmtoarele caracteristici generale: un vector de
intrare, u, un vector de ieire, y, i un vector de stare, x:

Vectorul de stare poate consta din stri continue, stri discrete sau combinaii ale acestora.
Relaiile matematice dintre aceste mrimi (intrri, ieiri, stri) sunt exprimate prin ecuaii de tipul:
y f 0 ( t , x ,u )

iesirea

xd k 1 f u ( t , x ,u )

actualizare

xc f d ( t , x ,u )

derivata

xc

xd k

unde x

Simularea const n dou faze: iniializare i simulare propriu-zis.


Faza de iniializare nseamn parcurgerea urmtoarelor etape:
1. Blocul parametrilor este trecut n MATLAB pentru evaluare. Valorile numerice rezultate sunt
folosite ca parametri actuali (cureni).
2. Este parcurs ierarhia modelului. Fiecare subsistem care nu este un subsistem executat
condiionat este nlocuit prin blocurile componente.
3. Blocurile sunt sortate n ordinea n care este necesar actualizarea lor. Algoritmul de sortare
ntocmete o list astfel nct orice bloc nu este actualizat pn cnd blocurile care furnizeaz
intrrile acestuia nu sunt actualizate. n timpul derulrii acestei etape sunt detectate buclele
algebrice.
4. Conexiunile dintre blocuri sunt verificate pentru asigurarea compatibilitii ieire-intrare.
95

Urmeaz faza de simulare propriu-zis. Modelul este simulat prin integrare numeric. Calculul
derivatelor se face n doi pai. Prima dat ieirea fiecrui bloc este calculat n ordinea determinat
de algoritmul de sortare. La al doilea pas, pentru fiecare bloc se calculeaz derivatele n funcie de
timp, intrri i stri. Vectorul derivatelor rezultat este returnat algoritmului de rezolvare de tip ODE,
care l utilizeaz pentru calculul noului vector de stare pentru momentul de timp urmtor. O dat ce
noul vector de stare este calculat, blocurile sunt actualizate.
BIBLIOGRAFIE
1. Ionete C., Seliteanu D., Petrior A. Proiectarea sistemic asistat de calculator n
MATLAB, Reprografia Universitii din Craiova, 1995.
2. Leonard N.E., Levine W.S Using MATLAB to analyze and design Control Systems,
Addison-Wesley Publ., SUA, 1995.
3. Marchand P. Graphics and GUIs with MATLAB, CRC Press, SUA, 1999.
4. *** MATLAB Users Guide, The Mathworks Inc., SUA, 2000.
CUPRINS
CAP. 1. PREZENTARE GENERAL

CAP. 2. FUNDAMENTELE PROGRAMRII N MATLAB

2.1. Expresii fundamentale


2.2. Help on-line, formatul datelor, opiuni de salvare
2.3. Crearea fiierelor MATLAB (.m files)
2.4. Matrici, vectori i polinoame
2.5. Operaiuni elementare cu matrici i funcii

5
8
12
17
23

CAP. 3. MEDIUL DE LUCRU MATLAB

25

3.1. Startul i terminarea sesiunilor de lucru


3.2. Fereastra de comand (fereastra principal)
3.2.1. Editarea liniilor de comand n fereastra principal
3.2.2. Descrierea ferestrei de comand
3.2.3. Spaiul de lucru al MATLAB-ului (workspace)
3.2.4. Ci de cutare
3.3. Fereastra grafic (figure)
3.4. Importul i exportul de date
3.5. Utilizarea memoriei

25
27
27
29
32
34
36
38
42

CAP. 4. EDITORUL/DEBUGGER-UL I PROFILER-UL MATLAB

43

4.1. Editorul/Debugger-ul MATLAB


4.2. Profiler-ul MATLAB

43
51

CAP. 5. MATRICI, ALGEBR LINIAR, POLINOAME,


TEHNICI DE INTERPOLARE
5.1. Matricile n MATLAB
5.2. Rezolvarea ecuaiilor liniare
5.3. Inverse i determinani
5.4. Funcii de matrice. Valori proprii

56
56
58
60
61

96

5.5. Reprezentarea polinoamelor. Interpolarea


CAP. 6. REPREZENTAREA FUNCIILOR. ECUAII DIFERENIALE

63
69

6.1. Reprezentarea i plotarea funciilor matematice


6.2. Minimizarea funciilor i gsirea zerourilor
6.3. Integrarea numeric
6.4. Rezolvarea ecuaiilor difereniale

69
71
73
75

CAP. 7. PROGRAMAREA N LIMBAJUL MATLAB

78

7.1. Fiiere MATLAB


7.2. Tipuri de date i operatori
7.3. Instruciuni de salt i bucle
7.4. Evaluarea datelor de tip caracter
7.5. Reprezentarea i manipularea informaiilor despre dat i timp
7.6. Intrri utilizator

78
80
84
85
86
86

CAP. 8. GRAFICE I INTERFEE GRAFICE N MATLAB


8.1. Tehnici de plotare
8.1.1. Plotri 2 D elementare
8.1.2. Grafice 2 D specializate
8.1.3. Plotri tridimensionale (3 D)
8.2. Handle Graphics i Interfee Grafice n MATLAB (GUI)
8.2.1. Graficele privite ca obiecte. Ierarhia obiectelor
8.2.2. Proprietile obiectelor grafice
8.2.3. Funcii de generare a obiectelor grafice

87
87
88
96
101
105
105
109
110

CAP. 9. PREZENTAREA TOOLBOX-URILOR MATLAB


9.1. Toolbox-ul Comunicaii (Communications Toolbox)
9.2. Toolbox-ul pentru Sisteme de Conducere Automat
(Control System)
9.3. Toolbox-ul pentru Baze de Date (Database Toolbox)
9.4. Toolbox-ul de Procesare a Semnalelor
(Signal Processing Toolbox)
9.5. Toolbox-ul DSP Blockset
9.6. Toolbox-ul Finane (Financial Toolbox)
9.7. Toolbox-ul de Procesare a Imaginilor
(Image Processing Toolbox)
9.8. Toolbox-ul Optimizare (Optimization Toolbox)
9.9. Toolbox-ul pentru Sisteme de Putere (Power System Blockset)
9.10. Toolbox-ul Stateflow (Diagrame de stare)
9.11. Toolbox-ul de Statistic (Statistics Toolbox)
9.12. Toolbox-ul pentru Calcul Simbolic (Symbolic Math Toolbox)
CAP. 10. PACHETUL DE MODELARE I SIMULARE SIMULINK
10.1. Rularea unui model SIMULINK demonstrativ
10.2. Crearea modelelor SIMULINK
10.3. Rularea simulrilor n SIMULINK
10.4. Modul de lucru al unui program SIMULINK
BIBLIOGRAFIE

112
112
112
113
113
113
114
114
114
115
115
116
116
117
117
120
125
127
97

97

You might also like