Professional Documents
Culture Documents
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)
Strfun
Character strings.
Iofun
Timefun
Datatypes
File input/output.
Time and dates.
Data types and structures.
Specfun
Matfun
Datafun
Polyfun
Funfun
Sparfun
Sparse matrices.
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.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
-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
'
(
)
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
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
Realmin
Realmax
Inf
Infinity
NaN
Not-a-number
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.
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
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
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
Pentru tergerea tuturor variabilelor curente din memoria de lucru se poate utiliza
comanda clear.
2.3.
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
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)
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;
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
Gsirea zerourilor
Optimizare
Integrare numeric
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;
1 cu programul:
x = 0:.002:1;
y = humps(x);
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
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.
16
5
9
4
3
10
6
15
2
11
7
14
13
8
12
1
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
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)
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]
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.
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
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
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
r M_file
Regserver
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
finishdlg.m:
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]
1
4
7
2
5
8
3
6
10
18
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
Ctrl-b
Ctrl-f
Ctrl-r
Ctrl-l
Ctrl-a
Ctrl-e
Ctrl-u
Ctrl-d
Ctrl-h
Ctrl-k
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);
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.
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:
Editor Preference Permite folosirea editorului MATLAB sau specificarea altui editor.
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
-ascii
-ascii -double
-v4
-append
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*
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),
cutare.
rmpath /home/lib
24
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
M-file (name.m)
Model (name.mdl)
P-file (name.p)
Variable
Alte extensii
(name.custom)
3.3.
Fereastra grafic (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
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
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
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
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
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
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
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'
Fiierele .mat sunt binare i dependente de main dar pot fi transportate ntre computere
deoarece conin semntura de main n antetul fiierului.
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.
3.5.
Utilizarea memoriei
MATLAB-ul necesit o zon continu de memorie pentru stocarea datelor din fiecare
matrice.
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
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
31
tot = sqsum(x,mu);
y = tot/(length(x)-1);
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];
Scop
Descriere
Seteaz/
terge
Breakpoint
terge toate
Breakpointurile
Toolbar
Step In
(Pas n)
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
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.
dup care prin selectarea opiunii Single Step din meniul Debug se execut linia urmtoare. Se
evalueaz variabila tot:
K>> tot
tot =
= 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
Reluarea execuiei.
dbstop at line_num in
file_name
dbclear at line_num in
file_name
dstop if warning
error
naninf
infnan
Dbcont
Dbstack
dbstatus file_name
dbstep nlines
dbtype file_name
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
Opiuni
Descriere
Starteaz profiler-ul i terge statisticile nregistrate anterior.
Profile on
-detail
level
-history
Profile
report
Basename
Profile
plot
Profile
resume
Profile
clear
Profile off
Profile
status
stats
=
profile('in
fo')
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
37
38
Funcia
Descriere
Analiza matriceal
norm
normest
rank
Rangul matricei.
det
Determinant.
trace
null
Spaiul Nul.
orth
Ortogonalizare.
subspace
\ i /
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
poly
Polinomul caracteristic.
hess
Forma Hessenberg.
qz
Factorizarea QZ.
schur
Decompoziia Schur.
expm
logm
Exponeniala de matrice.
Logaritmul de matrice.
sqrtm
funm
lu
qr
pinv
lscov
Valori proprii i
valori singulare
Funcii de matrice
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.
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
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
10
25
46
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
i un vector
43
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
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
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.
2.0000
4.0000
1.0000
-1
-3
2
-2
0
1
poly(A)
ans =
1
6
1
-1
-3
18
23
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
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).
48
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');
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])
fplot('2*sin(x+3)',[-1 1])
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
Procedure
initial
initial
interpolation
bisection
interpolation
bisection
interpolation
interpolation
interpolation
interpolation
interpolation
interpolation
interpolation
a =
-0.1316
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
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);
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
odeget
odeplot
odephas2
odephas3
odeprint
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:
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:
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
2. Apelarea fiierului .m de
la linia de comand sau
din alt fiier .m.
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:
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
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
Inline('sin(x)')
Operatori
Operatorii MATLAB pot fi clasificai n trei categorii:
Operatori aritmetici
Operatori logici
Operatori aritmetici
+
Adunare
Scdere
.^
Putere
.*
nmulire
.'
Transpusa
./
mprire la dreapta
'
.\
mprire la stnga
nmulire de matrici
Plus unar
Minus unar
Putere de matrice
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
A = [0 1 2;3 5 0];
all(A)
ans =
0
1
0
v = [5 0 8];
any(v)
ans =
1
Nivel de prioritate
Prioritate maxim
Prioritate minim
if, mpreun cu else i elseif execut un grup de instruciuni pe baza unei condiii
logice.
while execut un grup de instruciuni de un numr nedefinit de ori, pe baza unei condiii
logice.
try...catch schimb controlul buclei dac o eroare este detectat n timpul execuiei.
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
A = n/2;
else
A = (n+1)/2;
end
Instruciunea for:
for i = 1:m
for j = 1:n
A(i,j) = 1/(i + j - 1);
end
end
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
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
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.
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)
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
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')
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)
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')
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
66
67
68
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)
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.
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.
2
7
8
5
3
1
3
6
5
2];
71
Grupele de coloane
reprezint linii din
Y.
Ultimul grup de
bare reprezint
ultima linie din Y
72
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
73
Animaie
Se pot crea secvene animate n MATLAB pe dou ci:
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
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)
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')
view([30,25])
set(gca,'CameraViewAngleMode','Manual')
h = surf(Z);
colormap hot
shading interp
set(h,'EdgeColor','k')
set(gca,'PlotBoxAspectRatio',...
[2.5 2.5 1])
9. Operaiuni de tiprire
set(gcf,'PaperPositionMode','auto')
print -dps2
75
Utilizare
mesh, surf
meshc, surfc
meshz
pcolor
surfl
surface
Funcie de nivel sczut pentru crearea unor obiecte tip grafice suprafa
Matricea R conine distanele de la centru (originea), iar eps este adugat pentru a evita
mprirea la zero.
76
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
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.
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
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
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,...)
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)
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
o Calcul matematic:
o Algebr liniar:
o Simplificri:
o Soluionarea ecuaiilor:
o Aritmetic cu precizie
variabil:
o Transformri:
o Funcii matematice
speciale:
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.
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.
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
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.
90
Pentru construcia modelului vor fi necesare blocuri din urmtoarele biblioteci Simulink:
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):
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).
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
94
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
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
5
8
12
17
23
25
25
27
27
29
32
34
36
38
42
43
43
51
56
56
58
60
61
96
63
69
69
71
73
75
78
78
80
84
85
86
86
87
87
88
96
101
105
105
109
110
112
112
112
113
113
113
114
114
114
115
115
116
116
117
117
120
125
127
97
97