Sunteți pe pagina 1din 32

UTILIZAREA SISTEMULUI MATLAB

PENTRU APLICAŢII GRAFICE


1. Generalităţi
MATLAB este un mediu de programare şi un limbaj de înaltă performanţă utilizat în tehnică
care integrează calcul numeric, grafică avansată, vizualizare şi programare. Acesta oferă
cercetătorilor, inginerilor şi oricărui om de ştiinţă un sistem interactiv, puternic şi uşor de utilizat,
în care problemele şi soluţiile sunt exprimate într-un mod natural. Utilizările sale tipice includ:
- calcul matematic (numeric şi simbolic);
- algoritmi de dezvoltare;
- modelare şi simulare;
- analiză de date, explorarea şi vizualizarea acestora;
- grafică ştiinţifică şi inginerească;
- aplicaţii de dezvoltare, incluzând realizarea de interfeţe grafice utilizator.
MATLAB are o familie de aplicaţii specifice numite "toolboxes", care aplică o tehnologie
specializată şi care sunt o colecţie de funcţii MATLAB ("M-files") ce extind mediul MATLAB
să rezolve clase particulare de probleme. Aria în care sunt disponibile toolbox – urile include:
procesare de semnal, procesare de imagine, comanda sistemelor, simulare, reţele neurale, fuzzy
logic şi multe altele.
Toată familia de produse MATLAB aparţine firmei The MathWorks Inc. Ultima versiune
este MATLAB 7.
MATLAB este un sistem interactiv, al cărui element de bază este o matrice care nu trebuie
declarată înainte de folosire şi care nu are o dimensiune ce trebuie specificată. În sens larg, un
vector este o matrice cu o linie sau o coloană, iar un scalar este un vector cu dimensiunea 1.
Acest mod de lucru permite exprimarea simplă şi naturală a operaţiilor matematice (aşa cum s-ar
scrie pe hârtie) şi rezolvarea multor probleme de calcul tehnic cu formulări matriceale şi
vectoriale. Numele de MATLAB provine de la "matrix laboratory".
MATLAB – lucrează fie în modul linie de comandă, situaţie în care fiecare linie este
prelucrată imediat, rezultatele putând fi afişate, fie cu programe (mai multe instrucţiuni
MATLAB, cu posibilitatea apelării altor fişiere de acelaşi tip şi a apelării recursive) conţinute in
fişiere numite fişiere – M ("M-files") deoarece au extensia .m.
Sistemul MATLAB cuprinde 5 părţi principale.
1) Limbajul MATLAB este un limbaj de nivel înalt de tip matrice / vector cu instrucţiuni de
control, funcţii, structuri de date, intrări / ieşiri şi trăsături de programare orientată pe obiecte.
2) Mediul de lucru MATLAB este un set de instrumente şi facilităţi cu care intră în contact
utilizatorul sau programatorul MATLAB. Include facilităţi pentru gestiunea variabilelor
(acces, vizualizare, informaţii) în spaţiul de lucru şi importarea / exportarea datelor. În plus,
permite dezvoltarea, depanarea şi lucrul cu fişiere de tip M ("M-files").
3) "Handle Graphics" este sistemul grafic MATLAB care include comenzi de nivel înalt pentru
vizualizări 2-D şi 3-D, procesare de imagine, animaţie şi prezentări grafice. Include şi
comenzi de nivel redus pentru personalizarea modului de prezentare a graficelor şi
construirea interfeţelor grafice utilizator (GUI) pentru aplicaţii.
4) Librăria de funcţii matematice MATLAB este o colecţie vastă de algoritmi de calcul şi
analiză. Există peste 500 de funcţii matematice, pentru statistică şi inginerie optimizate
pentru calcul matriceal. Acestea includ:
- algebră liniară şi calcul matriceal;
- funcţii Fourier şi de analiză statistică;
- rezolvare de ecuaţii diferenţiale;

1
- operaţii trigonometrice şi alte operaţii matematice fundamentale.
5) Interfaţa Program Aplicaţie ("Application Program Interface") – API - este o librărie
specializată care permite interacţiunea cu programe externe mediului MATLAB. Este
permisă astfel apelarea programelor scrise în C sau Fortran, importarea / exportarea datelor şi
stabilirea de relaţii de tip client / server între MATLAB şi alte programe.
Cursul îşi propune să descrie facilităţile grafice MATLAB pentru vizualizarea datelor şi
stabilirea modului de prezentare a graficelor, precum şi pentru crearea unor interfeţe grafice
utilizator.
În acest sens, MATLAB furnizează:
- o serie de funcţii (rutine) grafice de nivel înalt care implementează cele mai utilizate tehnici
pentru afişarea datelor precum reprezentările grafice în coordonate rectangulare sau polare,
reprezentările grafice speciale (cu bare, histograme ş.a.), reprezentările grafice ale liniilor de
contur sau suprafeţelor şi animaţia;
În plus, prin funcţii specializate, pot fi controlate unele aspecte privind modul de prezentare
al graficelor (culoare, umbrire, etichete pe axe ş.a.) fără a fi necesară accesarea explicită a
unor proprietăţi ale obiectelor.
- sistemul grafic orientat pe obiecte ("Handle Graphics"), care permite inclusiv realizarea de
interfeţe grafice programabile;
"Handle Graphics" defineşte un set de obiecte grafice (linii, suprafeţe, text ş.a.) şi oferă
mecanismul de manipulare a acestor obiecte pentru a obţine rezultatele dorite. Se poate avea
astfel un control mult mai precis asupra modului de afişare al datelor şi se pot dezvolta
aplicaţii grafice proprii.
Utilizând "Handle Graphics" , utilizatorul poate crea meniuri şi elemente de control interactiv
pentru reprezentările grafice (butoane prin apăsare, potenţiometre, casete de control, liste de
opţiuni ş.a.).
Fişierele - M utilizator, create pentru a executa operaţii grafice, pot utiliza atât funcţii grafice
de nivel înalt cât şi sistemul "Handle Graphics" în mod direct.

2. Sistemul grafic MATLAB orientat pe obiecte ("Handle Graphics")


MATLAB foloseşte programarea orientată pe obiecte pentru controlul interactiv al
reprezentărilor grafice. Conform acesteia, ferestrele figură sunt obiecte figură (“figure”) şi sunt
copii ai obiectului grafic rădăcină "root" (fereastra ecran). De asemenea, sunt părinţi ai oricăror
alte obiecte grafice: ai axelor ("axes"), elementelor de control ale interfeţelor grafice
("uicontrol") şi meniurilor ("uimenu").

Există 11 tipuri de obiecte grafice:


- “root” , care este în topul ierarhiei şi corespunde ecranului computer-ului; în mod automat, la
începutul unei sesiuni MATLAB, este creat obiectul “root”;
- “figure” – corespunde ferestrei figură;
- “uicontrol” – sunt obiecte asociate controalelor unei interfeţe grafice butoane prin apăsare,
butoane radio, slidere), care execută o funcţie când sunt activate de utilizator;
- “axes” – obiect care defineşte o zonă din fereastra figură asociată unui sistem de axe;
- “uimenu” – obiecte asociate meniurilor unei interfeţe grafice utilizator, dispuse în partea de
sus a ferestrei figură;
- “image” – obiecte de tip imagine;

2
- “line” – obiecte grafice primitive de bază pentru cele mai multe grafice 2D;
- “patch”- obiecte care constau în poligoane pline şi laturile acestora;
- “surface” – obiecte 3D care corespund repreyentărilor grafice 3D a matricelor de date;
- “text” – obiecte de tipul şir de caractere;
- “light” – obiecte care definesc surse de lumină care afectează toate obiectele în interiorul
unui sistem de axe.
Fiecare tip de obiect grafic are o serie de proprietăţi ce pot fi modificate (setate). Sistemul
MATLAB asociază fiecărui obiect grafic creat un identificator ("handle"). Pentru a putea accesa
proprietăţile obiectului, este util ca, la crearea acestuia, să se reţină identificatorul într-o
variabilă.
Modificarea proprietăţilor obiectelor grafice se realizează apelând comanda set, care are
următoarea sintaxă:
set (identificator, ' numele_proprietăţii' , valoarea_proprietăţii)
Pentru a obţine valoarea curentă a unei proprietăţi se apelează funcţia get cu următoarea
sintaxă:
get (identificator, ' numele_proprietăţii' )
Identificatorul obiectului rădăcină este totdeauna 0. Pentru obiectul figură, în mod implicit
acesta este un număr întreg afişat în bara de titlu a ferestrei grafice. În versiunile mai noi de
MATLAB (începând cu 5), prin setarea proprietăţii IntegerHandle a figurii la valoarea off,
identificatorul figurii poate fi un număr în virgulă flotantă. Identificatorii oricăror alte obiecte
grafice sunt numere în virgulă flotantă.
Există şi următorii identificatori predefiniţi:
gcf – pentru fereastra figură curentă (“Get Current Figure”)
gca – pentru sistemul de axe curent (“Get Current Axes”)

Exemple de utilizare a funcţiilor set şi get


set(gcf, 'color', 'w') – stabileşte culoarea alb pentru figura curentă
set(gca, 'color', 'y') – stabileşte culoarea galben pentru sistemul de axe curent
get(gcf, 'color') – returnează culoarea figurii curente
get(gca, 'color') – returnează culoarea sistemului de axe curent

3. Fereastra figură
MATLAB afişează reprezentările grafice într-o fereastră diferită de cea de comandă numită
fereastra figură ("Figure window"). Caracteristicile acesteia sunt controlate de posibilităţile
sistemului de afişare al calculatorului şi de proprietăţile obiectului figură.
Funcţiile grafice creează în mod automat o nouă fereastră figură, dacă nu există deja una
curentă. Dacă există, aceasta va fi folosită pentru afişare. În cazul în care există mai multe
ferestre figură, afişarea va avea loc în figura desemnată a fi cea curentă, în mod uzual ultima
fereastră utilizată.
Pentru a crea o nouă fereastră figură care va deveni curentă, se apelează funcţia figure, cu
una din următoarele sintaxe posibile:
figure

h = figure
Varianta a doua se foloseste pentru ca identificatorul noii figuri să fie reţinut în variabila h în
scopul accesării ulterioare a figurii.
Dacă există mai multe obiecte figură, stabilirea figurii cu identificatorul h ca fiind cea
curentă, se realizează cu sintaxa
figure(h)
Se poate folosi ca identificator al ferestrei grafice curente funcţia gcf ("GetCurrentFigure").

3
Există 54 de proprietăţi ale obiectului figură. Dintre acestea:
• 'Color' - vector [ r g b]- stabileşte culoarea fondului;
• 'IntegerHandle' –{ 'on'}/'off'- identificatorul figurii este un număr întreg sau un număr în
virgulă flotantă;
• 'MenuBar' - 'none'/{'figure'}- nu afişează/afişează bara de meniuri a ferestrei figură;
• 'Name' – şir de caractere- numele din bara de titlu;
• 'NumberTitle' –{ 'on'}/'off'- afişează sau nu identificatorul figurii în bara de titlu;
• 'Position' – vector cu 4 elemente [left bottom width height] care stabileşte poziţia şi
dimensiunea ferestrei figură în cadrul ferestrei ecran;
• 'Resize' – { 'on'}/'off' – permite sau nu redimensionarea cu mouse-ul a ferestrei figură;
• 'Visible' – { 'on'}/'off' – stabileşte vizibilitatea ferestrei figură;
• 'Tag' – şir de caractere (etichetă) asociat de utilizator obiectului grafic
• 'Units' – 'inches' | 'centimeters' | 'normalized' | 'points' | {'pixels'} | 'characters' satbileşte
unităţile de măsură folosite la proprietatea 'Position';

Spre exemplu, sintaxa get (gcf, 'Position') furnizează vectorul poziţie al figurii
curente.
Observaţie
În mod implicit, fondul ferestrei figură este negru pentru versiunile MATLAB inferioare lui
5 şi gri începând cu MATLAB 5. Pentru a modifica fondul ferestrei figură, există două
posibilităţi:
- se foloseşte comanda set pentru a modifica proprietatea 'Color' la valoarea dorită;
- se foloseşte whitebg.
Sintaxe posibile:
whitebg(fig, c) – stabileşte fondul implicit al sistemului de axe pentru figurile ai căror
identificatori sunt incluşi în vectorul fig la valoarea specificată în c. Fondul ferestrei figură se
schimbă (o nuanţă apropiată culorii fondului sistemului de axe) astfel încât să fie menţinut un
contrast adecvat. Argumentul c poate fi un vector de dimensiunea 1x3 (vector RGB), sau un şir
de caractere care defineşte culoarea (spre exemplu 'white' or 'w'). Dacă proprietatea ‘color’ a
sistemului de axe este 'none', culoarea figurii (în locul culorii sistemului de axe) este setată la
culoarea specificată.
whitebg(fig) lucrează ca un comutator şi comută culoarea obiectelor grafice din
figurile specificate în fig la valoarea complementară cele actuale. Sintaxa este folosită în mod
uzual pentru comutarea între alb şi negru. Dacă pentru fig se specifică 0 (“root window”) va fi
afectată culoarea implicită pentru noile figuri.
whitebg şi whitebg(c) – sintaxe fără specificarea identificatorilor unor figuri-
afectează fereastra curentă şi noile figuri.

4
4. Reprezentări grafice 2-D

4.1. Reprezentări grafice elementare


MATLAB oferă o varietate de funcţii pentru afişarea vectorilor şi matricelor de date sub
formă grafică, precum şi funcţii pentru adnotarea şi tipărirea acestor grafice.
Funcţiile prezentate diferă prin modul în care sunt scalate axele sistemului.
plot - reprezintă grafice în coordonate liniare;
loglog - reprezintă grafice în coordonate logaritmice;
semilogx - reprezintă grafice într-un sistem în care axa x este scalată logaritmic, iar axa y liniar;
semilogy - reprezintă grafice într-un sistem în care axa x este scalată liniar, iar axa y logaritmic;
plotyy - reprezintă două grafice în aceeaşi fereastră figură: unul cu axa y afişată în stânga, iar
celălalt cu axa y afişată în dreapta. Este o funcţie disponibilă începând cu versiunea
MATLAB 5;
fill - reprezintă grafic poligoane.

4.1.1. Reprezentarea grafică 2D în coordonate liniare

Funcţia plot permite reprezentarea grafică a datelor în coordonate liniare şi are diferite
forme de utilizare în funcţie de argumentele de intrare. După apelul funcţiei, sunt create unul sau
mai multe obiecte grafice de tip line care sunt copii ai unui obiect grafic de tip axes. Dacă acesta
din urmă nu există, este creat în mod automat.
Sintaxe posibile:
a) plot (y)
• Dacă y este un vector de dimensiune n, sintaxa trasează graficul y = y(i), unde i = 1…n este
indexul elementelor vectorului.
• Dacă y este o matrice de dimensiune m x n, vor fi trasate n grafice de forma yj = yj(i), unde
i = 1…m este indexul elementelor de pe coloana j.
b) plot (x, y)
• Dacă x şi y sunt vectori de aceeaşi dimensiune, se reprezintă grafic funcţia y = y(x).
• Dacă x şi y sunt matrice de aceeaşi dimensiune, se reprezintă grafic coloanele lui y în funcţie
de coloanele lui x.
• Dacă x este un vector de dimensiune n şi y o matrice de dimensiune n x m, se reprezintă
grafic coloanele lui y în funcţie vectorul x, deci se obţin m grafice.
c) plot (x1 ,y 1,x 2, y2…)
Această sintaxă este folosită pentru a reprezenta simultan mai multe grafice, corespunzând
mai multor perechi de argumente (x1, y1), (x2, y2) ş.a.m.d. în acelaşi sistem de coordonate.
d) plo t(… , ‘nume_proprietate1', valoare_proprietate1, ‘nume_proprietate2',
valoare_proprietate2… )
permite specificarea valorilor unor proprietăţi pentru obiectele de tip line încă din momentul
creării acestora; acestea se aplică tuturor liniilor create.
e) plot (x, y, 'cu l oare _ti pli nie _m ar cato r')
Ultimul argument este un şir de caractere format din simbolurile unuia sau tuturor 3
caracteristicilor liniei de trasare, ordinea precizării acestora neavând importanţă. Simbolurile
disponibile şi semnificaţiile acestora sunt prezentate în tabelul 1.

Culoare Tip linie Tip marcator


Simbol Semnificaţie Simbol Semnificaţie Simbol Semnificaţie
y galben - continuă . punct
m mov -- întreruptă o cerc
c albastru-deschis : punctată x marcatorul x
r roşu -. linie-punct + plus

5
g verde * asterisc
b albastru s pătrat
w alb d diamant
k negru v triunghi isoscel cu un vârf în jos
^ triunghi isoscel cu un vârf în sus
< triunghi isoscel cu un vârf la stânga
> triunghi isoscel cu un vârf la dreapta
p pentagrama (stea cu 5 colţuri)
h hexagrama (stea cu 6 colţuri)
Tab.1 Simbolurile şi semnificaţiile caracteristicilor liniei de trasare

f) plo t(x1 , y 1,' cu l1_t ipl ini e1_ ma rc 1',x 2, y2,


'cul 2_t ipl ini e2 _m arc2 ', …)
stabileşte cele trei caracteristici pentru liniile asociate fiecarei perechi de argumente de intrare
x,y.
g) h = plot(...)
Pe lângă efectele grafice corespunzătoare argumentelor de intrare, această sintaxă
înregistrează identificatorii tuturor obiectelor de tip line create în variabila h (vector dacă sunt
mai multe obiecte line).

4.1.2. Reprezentarea grafică în coordonate logaritmice şi semilogaritmice

Funcţiile destinate acestor reprezentări au modul de utilizare identic cu cel al funcţiei


plot, diferind doar tipul de scalare a axelor. Astfel:
logl og( x,y ) scalează ambele axe utilizând logaritmul în baza 10 (reprezintă grafic funcţia
log(y) = f (log(x)) );
semi log x(x ,y) scalează logaritmic doar axa x, axa y fiind scalată liniar (reprezintă grafic
funcţia y = f (log(x)) );
semi log y(x ,y) scalează logaritmic doar axa y, axa x fiind scalată liniar (reprezintă grafic
funcţia log(y) = f (x) ).

4.1.3. Proprietăţile obiectului grafic de tip LINE (obţinut cu plot, loglog, semilogx,
semilogy)

Dintre proprietăţile obiectelor de tip line se prezintă următoarele:


• Color – culoarea de trasare
• LineStyle: [ {-} | -- | : | -. | none ] – tipul liniei de trasare
• LineWidth – scalar care semnifică grosimea liniei
• Marker: [ + | o | * | . | x | square | diamond | v | ^ | > | < | pentagram | hexagram | {none} ] –
tipul de marcator
• MarkerSize - scalar care semnifică dimensiunea marcatorului
• MarkerEdgeColor: [ none | {auto} ] sau o culoare specificată – stabileste culoarea de contur a
marcatorului
• MarkerFaceColor: [ {none} | auto ] sau o culoare specificată – stabileste culoarea interioara a
marcatorului, dacă acesta este delimitat de un contur inchis
• Xdata – vector cu datale reprezentate în abscisă
• YData– vector cu datale reprezentate în ordonată
• UIContextMenu – identificatorul unui meniul contextual asociat
• Visible: [ {on} | off ] – starea de vizibilitate

6
Exemplu de creare a unui meniu contextual pentru un obiect de tip line care va permite
alegerea tipului de linie de trasare

1. Se creează obiectul linie cu salvarea identificatorului într-o variabilă:


l = plot(1:5, 1:5);
2. Se creează obiectul de tip uicontextmenu:
mc = uicontextmenu;
3. Se definesc articolele de meniu contextual ;i operaíile care vor fi executate la selectarea
lor:
op1=[’set(l, ”linestyle”, ”--”)’];
op2=[’set(l, ”linestyle”, ”:”)’];
op3=[’set(l, ”linestyle”, ”-”)’];
op4=[’set(l, ”linestyle”, ”-.”)’];
articol1=uimenu(mc,’label’, ’linie intrerupta’,’callback’, op1);
articol2=uimenu(mc,’label’, ’linie punctata’,’callback’, op2);
articol3=uimenu(mc,’label’, ’linie continua’,’callback’, op3);
articol4=uimenu(mc,’label’, ’linie-punct’,’callback’, op4);
4. Se asociază meniul contextual obiectului linie
set(l,’ uicontextmenu’,mc);

4.1.4. Funcţia plotyy


Atunci când domeniile datelor ce se doresc a fi reprezentate pe axa y sunt mult diferite
sau când se doreşte reprezentarea grafică în acelaşi sistem de axe a unor funcţii cu axele y scalate
diferit, este utilă funcţia plotyy. Aceasta reprezintă două perechi de grafice ale căror gradaţii pe
axele y sunt în stânga, respectiv dreapta graficelor şi este disponibilă începând cu versiunea
MATLAB 5.2.
După apelul funcţiei, sunt create, ca şi copii ai obiectului “figure” curent, două obiecte
grafice de tip “axes” suprapuse, fiecare având drept copii unul sau mai multe obiecte de tip
„line” corespunzătoare celor două perechi de date de intrare.
Pentru apelul funcţiei plotyy se poate folosi una din sintaxele:
• plotyy(x1,y1,x2,y2) – trasează grafic funcţia y1=f(x1) cu axa y plasată la marginea
stângă a zonei delimitate de sistemul de axe şi funcţia y2=f(x2) cu axa y plasată în dreapta.
Reprezentările grafice sunt în coordonate liniare (cu funcţia plot).
• plotyy(x1,y1,x2,y2,fun) – permite, faţă de sintaxa precedentă, specificarea modului de
scalare a axelor, deci a funcţiei folosite la reprezentări, prin argumentul fun. Acesta trebuie
să fie un şir de caractere ce conţine numele unei funcţii care acceptă sintaxa fun(x,y).
Exemplu: 'plot', 'loglog', 'semilogx', 'semilogy'.
• plotyy(x1,y1,x2,y2,fun1,fun2) – utilizează fun1(x1,y1) pentru reprezentarea grafică
a datelor în sistemul de axe cu axa y în stânga şi fun2(x2,y2) pentru reprezentarea grafică a
datelor în sistemul de axe cu axa y în dreapta.
• [a,h1,h2] = plotyy(...) – sintaxă prin care, în vederea unei accesări ulterioare, sunt
reţinuţi:
- în vectorul a, identificatorii celor două sisteme de axe (componenta a(1) pentru sistemul
cu axa y în stânga şi componenta a(2) pentru sistemul cu axa y în dreapta);
- identificatorii obiectelor grafice corespunzătoare celor două perechi (în h1 şi h2).
Precizări:

7
1) Oricare din perechile x,y pot fi, în mod independent, de tipul vector-vector, vector-
matrice sau matrice-matrice. Este permisă astfel reprezentarea grafică, în oricare din cele
două sisteme de axe, a mai multor grafice.
2) Utilizând funcţia plotyy, nu se pot controla caracteristicile liniilor de trasare în
momentul trasării acestora. Vor fi folosite ciclic 7 culori.
3) Dacă una din perechile de date este de tip vector-vector (afişarea unui singur grafic în
sistemul de axe respectiv), axa y corespunzătoare va avea aceeaşi culoare cu graficul
asociat. În caz contrar, culoarea axei y este negru.
4) Modificarea proprietăţilor liniilor de trasare cu ajutorul editorului de plot nu este posibilă
decât pentru graficele asociate perechii x2,y2.
5) Caracteristicile liniilor de trasare corespunzătoare perechii x1,y1 pot fi totuşi modificate
prin specificarea unor noi valori pentru proprietăţile obiectelor grafice ai căror
identificatori sunt conţinuţi în variabila h1. Se poate astfel specifica, spre exemplu:
- culoarea, prin proprietatea 'Color';
- stilul de linie, prin proprietatea 'LineStyle';
- grosimea liniei, prin proprietatea 'LineWidth';
- tipul de marcator, prin proprietatea 'Marker';
- dimensiunea marcatorului, prin proprietatea 'MarkerSize'.
Valorile acceptate pentru 'Color', 'LineStyle' şi 'Marker' sunt şiruri de caractere ce conţin
simbolurile prezentate în tabelul 1 din lucrarea 2. În plus, pentru proprietatea 'Color'
poate fi folosit şi vectorul RGB cu 3 componente având valori cuprinse între 0 şi 1 care
reprezintă ponderea culorilor roşu, verde şi albastru în culoarea dorită. Pot fi astfel
obţinute şi nuanţe de culori.
6) Pentru stabilirea valorii unei proprietăţi a oricărui obiect grafic, se apelează funcţia set,
care are sintaxa
set(identificator,'nume_proprietate', valoare_proprietate)
Exemple:
set(h1,'Color',[1 0.4 0.6]) - asociază culoarea roz reprezentării grafice cu
identificatorul h1;
set(h2,'Color','g') - asociază culoarea verde reprezentării grafice cu
identificatorul h2;
set(h1(2),'LineStyle',':') - stabileşte tipul de linie punctată pentru
reprezentarea grafică cu identificatorul h1(2), care este al doilea grafic specificat în
perechea de date x1,y1;
set(h1(1),'LineWidth',2) - stabileşte valoarea 2 pentru grosimea liniei cu
care s-a realizat reprezentarea grafică cu identificatorul h1(1), care este primul grafic
specificat în perechea de date x1,y1;
7) Pentru a obţine valoarea curentă a unei proprietăţi se apelează funcţia get cu următoarea
sintaxă:
get (identificator, ' nume_proprietate' )

4.1.5. Reprezentarea grafică a poligoanelor


Pentru a reprezenta grafic un poligon plin cu o anumită culoare, se foloseşte funcţia fill
cu una din sintaxele de mai jos.
fill(x,y,'c')
fill(x,y,c)
h = fill(x,y,c)
Argumentele x şi y sunt vectori ce conţin coordonatele x, respectiv y ale vârfurilor
poligonului.
Al treilea argument poate fi un caracter din lista de culori sau un vector cu trei
componente [r g b], componentele vectorului fiind numere reale în intervalul [0 1] cu

8
semnificaţia ponderii culorilor de bază (roşu, verde şi albastru) în culoarea respectivă. În acest
ultim caz, pot fi obţinute şi nuanţe de culori. Corespondenţa dintre culorile de bază şi forma
vectorului [r g b] este cea din tabelul 2.

Simbol [r g b]
y [1 1 0]
m [1 0 1]
c [0 1 1]
r [1 0 0]
g [0 1 0]
b [0 0 1]
w [1 1 1]
k [0 0 0]
Tab.2 Corespondenţa dintre simbolurile culorilor de bază şi vectorii [r g b]

Dacă al treilea argument este un vector c cu aceeaşi dimensiune ca x şi y, elementele


acestuia sunt scalate şi utilizate apoi ca indici într-o matrice care specifică culorile vârfurilor.
Culorile dintre vârfuri sunt obţinute prin interpolare biliniară a culorilor vârfurilor.
În urma apelului, este creat un obiect grafic de tip “patch”. Dintre proprietăţile acestui tip
de obiect grafic se exemplifică următoarele:
EdgeColor: [ none | flat | interp ] -or- {a ColorSpec}- culoarea liniei de contur
FaceColor: [ none | flat | interp ] -or- {a ColorSpec} – culoarea de umplere
LineStyle: [ {-} | -- | : | -. | none ] -tipul liniei de contur
LineWidth - grosimea liniei de contur numai dacă linia este continuă
Marker: [ + | o | * | . | x | square | diamond | v | ^ | > | < | pentagram | hexagram | {none} ]
marcatorii din vârfuri
MarkerEdgeColor: [ none | {auto} | flat ] -or- a ColorSpec - culoarea liniei de contur a
marcatorilor
MarkerFaceColor: [ {none} | auto | flat ] -or- a ColorSpec - culoarea de umplere a marcatorilor
MarkerSize – dimensiunea marcatorilor
Vertices - matrice de dimensiunea n x 2 cu cele n coordonate ale vârfurilor
Xdata – vectorul cu abscisele vârfurilor
Ydata – vectorul cu ordonatele vârfurilor
UIContextMenu – meniu contextual asociat
Visible: [ {on} | off ] - vizibilitatea
Reprezentarea grafică a mai multor poligoane, printr-un singur apel al funcţiei fill, se face
cu una din sintaxele:
fill(x1,y1,'c1',x2,y2,'c2',...)
fill(x1,y1,c1,x2,y2,c2, ...)
h = fill(...)
Fiecare poligon este specificat printr-un triplet x, y, c, cu semnificaţia precizată anterior.

4.2. Reprezentarea grafică a funcţiilor predefinite între limite impuse


Pentru reprezentarea grafică a uneia sau mai multor funcţii predefinite de MATLAB sau
conţinute în fişiere funcţie utilizator (M – files), între limite specificate, se poate apela funcţia
fplot cu una din sintaxele de mai jos.
În toate sintaxele, primul argument este şirul de caractere ce reprezintă numele funcţiei,
iar al doilea un vector ale cărui elemente sunt limitele inferioară şi superioară ale abscisei şi
eventual ale ordonatei.

9
1) fplot('fun', limite)
reprezintă grafic funcţia fun între limitele specificate de argumentul limite. Vectorul limite poate
fi de forma [xmin xmax] dacă se impun doar limitele abscisei sau de forma [xmin xmax ymin
ymax] dacă se impun şi limitele ordonatei.
Exemplu: fplot('cos(x)', [0 2*pi 0 1])
reprezintă grafic funcţia cos(x) pentru x∈ [0, 2π], afişând doar porţiunea din grafic pentru care
cos(x)∈ [0, 1].
2) fplot('fun', limite, tol ), unde tol <1
permite, faţă de prima sintaxă, specificarea toleranţei relative acceptate la reprezentare. Implicit,
aceasta este 2e-3, adică 0,2%. Toleranţa determină numărul maxim de paşi utilizaţi la plotare
pentru axa x (numărul de puncte prin care se trasează funcţia) cu relaţia [(1/tol)+0,5] + 1 , în care
[ ] semnifică operatorul parte întreagă. Numărul implicit de paşi este astfel 501.
3) fplot('fun', limite, N ), unde N≥ 1
permite, specificarea numărului de intervale în care este împărţit domeniul absciselor. Astfel,
numărul de puncte utilizate la trasare va fi (N + 1). Pasul maxim va fi astfel (1/N)*(xmax -
xmin).
În scopul realizării unei reprezentări grafice corecte, în zonele în care derivata îşi schimbă rapid
valoarea, este utilizat în mod implicit un pas mult mai mic (pas adaptiv), indiferent de valoarea
specificată în argumentul N≥ 1.
4) fplot('fun', limite, 'culoare_linie_marcator')
permite, în plus faţă de sintaxa 1), specificarea culorii de reprezentare şi/sau a tipului de linie
şi/sau marcator, printr-un şir de maxim 3 caractere, ca la apelul funcţiei plot.
Exemplu: fplot('cos(x)', [0 2*pi], 'r:o')
5) fplot('fun', limite, … )
acceptă combinaţii ale argumentelor tol, N, 'culoare_linie_marcator' în orice ordine.
6) [X, Y] = fplot('fun', limite … )
nu afişează nici o reprezentare grafică, dar are ca efect crearea variabilelor X şi Y care conţin
valorile absciselor, respectiv ordonatelor funcţiei Y = fun(X). Reprezentarea grafică se poate face
ulterior cu funcţia plot.
Utilizând funcţia fplot pot fi realizate şi reprezentări grafice multiple pentru acelaşi
domeniu al absciselor. Pentru aceasta, există două posibilităţi.
- Se specifică pentru primul argument un şir de caractere ce conţine funcţiile de reprezentat
simultan, care să poată fi evaluat cu funcţia eval.
Exemplu: fplot('[cos(x) sin(x)]',[0 2*pi]) va reprezenta simultan funcţiile sin(x) şi cos(x)
pentru x∈[0, 2π].
- Se creează o funcţie utilizator (un M - file) având ca parametru de ieşire o matrice,
urmărindu-se ca fiecare coloană a acesteia să reprezinte valorile câte unei funcţii de
reprezentat. La apelul funcţiei fplot, ca prim argument, se specifică numele funcţiei (care
este şi numele fişierului .m)
- Exemplu: function y=f(x)
y(:,1) = sin(x(:));
y(:,2) = cos(x(:));
iar apoi, fplot('f' ,[0 2*pi])

4.3. Reprezentări grafice dinamice 2D


Executarea unei reprezentări grafice 2D poate fi însoţită de afişarea unui marker (cometă)
format dintr-un cerculeţ urmat de un segment de dreaptă (corpul cometei), care urmăreşte
traiectoria. Se obţine astfel un grafic animat (dinamic). Acest efect se obţine folosind funcţia
comet cu una din sintaxele de mai jos.
- comet(y) - realizează reprezentarea dinamică a vectorului y (elementele vectorului
funcţie de indexul acestora).

10
- comet(x,y) - realizează reprezentarea dinamică a vectorului y în funcţie de vectorul x.
- comet(x,y,p) - face aceeaşi reprezentare ca sintaxa anterioară, dar permite specificarea
lungimii corpului cometei ca fiind p∗length(y). Valoarea implicită a lui p
este 0.1.
Remarci:
1) Nu se pot obţine reprezentări grafice dinamice multiple (dacă unul din primele două
argumente este o matrice, nu se obţine o reprezentare grafică multiplă ca şi cu funcţia plot).
2) Reprezentarea grafică realizată, cu excepţia cometei, nu pot fi tipărite (sunt invizibile) şi nu
vor fi afişate dacă sunt copiate în altă parte. De asemenea, aceasta va dispărea la
redimensionarea figurii sau la încercarea de afişare a detaliilor cu comanda zoom.

4.4. Reprezentări grafice speciale 2D

4.4.1. Reprezentarea grafică în coordonate polare

Reprezentarea grafică în coordonate polare se realizează cu funcţia polar, apelată cu una din
sintaxele:
- polar(theta,rho)
- polar(theta,rho,cul_linie)
Primul argument (theta) trebuie să fie vectorul care conţine unghiurile faţă de direcţia
pozitivă a axei x, exprimate în radiani, ale componentelor vectorului rază (rho). Cei doi vectori
trebuie deci să aibă aceeaşi dimensiune.
Sistemul de axe afişat şi reţeaua grid vor fi cele specifice coordonatelor polare.
Cel de-al treilea argument (opţional) permite precizarea culorii, tipului de linie şi de
marcator, utilizate la reprezentare, aceleaşi cu cele de la funcţia plot.
Exemplu:
t = 0:0.01:2*pi;
polar(t,sin(2*t).*cos(2*t),'--r')

5. Controlul modului de afişare a sistemului de axe


Obiectul de tipul “Axes” este “copil” al obiectului de tip “Figure” şi poate fi “tatăl” a şase
tipuri de obiecte grafice: “Line”, „Text”, „Surface”, „Image”, „Patch” şi “Light”.
Un obiect de tipul “Axes” se poate crea astfel:
- în mod automat, la crearea unuia dintre copiii săi, dacă nu există un sistem de axe curent
în care să se facă afişarea;

11
- explicit, cu comanda axes, care permite afişarea unui sistem de axe într-o poziţie
specificată şi având dimensiuni specificate; sintaxa comenzii este:
axes('Position',[xinitial yinitial lungimex lungimey])

Elementele vectorului [xinitial yinitial lungimex lungimey] sunt exprimate în


unitaţi normalizate şi măsurate faţă de colţul din stânga jos al ferestrei figură curente.
axes – creează un sistem de axe cu poziţia şi dimensiunile implicite (umple fereastra
figură).

h = axes(...) – reţine identificatorul obiectului creat în variabila h.


axes(h) – face ca sistemul de axe cu identificatorul h să fie cel curent.

Obs. Identificatorul obiectul grafic “axes” curent este gca.

5.1. Controlul modului de prezentare a spaţiului dreptunghiular asociat


sistemului de axe
În acest sens, există o serie de proprietăţi ale obiectului grafic axe şi valori posibile ale
acestora.
1) 'Box' 'on' /'off'
specifică încadrarea sau nu a spaţiului destinat reprezentării grafice într-un dreptunghi.
2) 'Position' vector cu 4 componente
specifică poziţia şi lungimea axelor în fereastra figură, prin vectorul de forma
[xinitial yinitial lungimex lungimey].
Componentele xinitial şi yinitial sunt distanţele, pe orizontală şi verticală, de la colţul din
stânga jos al ferestrei figură la colţul din dreapta jos al reprezentării grafice.
Componentele lungimex şi lungimey sunt lungimile celor două axe.
Unităţile de măsură ale componentelor vectorului poziţie sunt, în mod implicit, unităţile
normalizate, pentru care colţul din stânga jos al ferestrei figură are coordonatele (0, 0), iar colţul
din dreapta sus are coordonatele (1, 1). Acestea pot fi schimbate prin proprietatea 'units'.
3) 'Units' 'pixels'/'normalized'/'inches'/'centimeters'/'points'
specifică sistemul de unităţi de măsură ce vor fi utilizate la interpretarea proprietăţii 'position'.
Indiferent de unităţile specificate, măsurarea se face faţă de colţul din stânga jos al ferestrei
grafice.
4) 'color' culoare specificată /'non'
specifică culoarea folosită pentru fondul reprezentării grafice din axele curente.
5) 'Visible' 'on' /'off'
specifică vizibilitatea sistemului de axe.

5.2. Limitele axelor


Pentru reprezentările grafice, MATLAB determină automat limitele axelor pe baza
domeniului datelor ce sunt reprezentate. Este permisă totuşi modificarea acestora prin apelarea
comenzii axis cu sintaxa
axis ([x min ,xm ax ,y min, yma x])
Noile limite pe cele două axe sunt definite în vectorul cu 4 elemente
[xmi n,x max ,ym in ,y max] .
În acest vector, xmin şi xmax sunt limita inferioară, respectiv superioară pentru abscisă,
iar ymin şi ymax sunt limita inferioară, respectiv superioară pentru ordonată.

12
Dacă se doreşte ca unele limite să fie autoscalate, în vectorul argument, la poziţia
respectivă se foloseşte variabila Inf pentru o limită superioară, respectiv -Inf pentru o limită
inferioară.
Exemplu: axis([-Inf 2 3 Inf])
Acelaşi efect se obţine specificând pentru proprietăţile 'xlim', respectiv 'ylim' ale
obiectului axe câte un vector de forma [xmin xmax], respectiv [ymin ymax].
Exemplu: set(gca,'xlim',[-Inf 2])
set(gca,'ylim',[3 Inf])
Pentru a determina autoscalarea reprezentării grafice curente, prin alegerea de către
sistemul MATLAB a celor mai bune limite, astfel încât reprezentarea să fie integrală, se
foloseşte sintaxa
axis('auto') sau axis auto

5.3. Gradarea axelor


MATLAB localizează marcajele de gradare pe axe şi valoarea gradaţiilor în funcţie de
valorile extreme ale datelor de reprezentat. Modul de gradare al celor două axe poate fi însă
schimbat modificând valorile proprietăţilor 'xtick', respectiv 'ytick' ale obiectului grafic axe
("axes"). Pentru acestea, se specifică vectori ale căror componente reprezintă valoarea gradaţiilor
ce vor fi utilizate pentru axe.
Setarea acestor proprietăţi se face cu comanda set.
Exemple: set(gca,'xtick',2:10)
set(gca,'ytick',[2 2.1 2.2 2.4 2.5])
Specificând intervalele de gradare a axelor, nu pot fi modificate limitele axelor. Astfel,
valorile specificate în vectori care depăşesc limitele axelor nu vor fi afişate.
Referitor la liniuţele folosite la gradarea axelor, sunt disponibile următoarele proprietăţi
şi valori posibile ale acestora:
- 'ticklength' vector cu două elemente
care specifică lungimea liniuţei de gradare prin raportul dintre lungimea ei şi lungimea axei celei
mai lungi. Primul element al vectorului se referă la reprezentările 2D, iar al doilea la cele 3D.
Vectorul implicit este [0.01 0.025].
- 'tickdir' 'in' /'out'
care precizează orientarea liniuţelor de gradare spre interior ('in') sau spre exterior ('out').
- 'xMinortick' 'on' /'off'
- 'yMinortick' 'on' /'off'
care activează sau nu afişarea liniuţelor de gradare secundare (între cele principale). Acestea sunt
distanţate automat, în funcţie de spaţiul dintre liniuţele de gradare principale.

5.4. Aspectul sistemului de axe


În mod implicit, MATLAB afişează graficele într-un sistem rectangular de axe
poziţionate în fereastra figură astfel încât spaţiul acesteia să fie utilizat în mod optim.
Modificarea simultană a modului de afişare a celor două axe se realizează cu comanda
axis astfel:
a) axis('square') sau axis square
face ca axele x şi y să aibă aceeaşi lungime (chenarul care le încadrează să fie un pătrat).
b) axis('equal') sau axis equal
determină aceeaşi factori de scală pentru ambele axe (o unitate de pe axa x va fi egală cu o
unitate de pe axa y). Dacă, în plus, se doreşte ca reprezentarea grafică să fie complet inclusă în
sistemul de axe, se foloseşte sintaxa
axis('equal', 'tight') sau axis equal tight
c) axis('normal') sau axis normal

13
rescalează reprezentarea grafică curentă astfel încât aceasta să fie cuprinsă integral în
dreptunghiul utilizat la reprezentare, anulând efectele sintaxelor axis('square') şi
axis('equal').
d) axis('off') sau axis off
şterge sistemul de axe şi etichetele acestora;
e) axis('on') sau axis on
reface sistemul de axe şi etichetele acestora;
f) axis('xy') sau axis xy
realizează reprezentarea grafică în coordonate carteziene, cu originea în colţul din stânga jos;
g) axis('ij') sau axis ij
realizează reprezentarea grafică în coordonate matriceale, cu originea în colţul din stânga sus
(axa i este verticală şi orientată în jos, iar axa j este orizontală şi orientată spre dreapta).
Pentru controlul independent al aspectului fiecărei axe, se accesează şi se modifică unele
proprietăţi ale obiectului axe. Se vor prezenta cele referitoare la axa x, pentru celelalte axe
lucrurile fiind similare.
- 'Xcolor' 'simbolculoare' / vector [r g b]
permite specificarea culorii cu care va fi afişată axa x şi etichetele acesteia prin şirul de caractere
reprezentând simbolul culorii sau prin vectorul [r g b].
- 'Xdir' 'normal' / 'reverse'
stabileşte direcţia de creştere a valorilor numerice pe axă: de la stânga la dreapta ('normal')
sau de la dreapta la stânga ('reverse').
- 'Xscale' 'linear' / 'log'
stabileşte modul de scalare a axelor.
- 'Xaxislocation' 'bottom' / 'top'
stabileşte poziţia axei Ox
- 'Yaxislocation' 'left' / 'right'
stabileşte poziţia axei Oy.

5.5. Afişarea şi controlul reţelei ajutătoare grid

Gridul este o reţea de linii verticale şi orizontale trasate pe grafic prin fiecare punct de
gradare a axelor care uşurează citirea datelor. Afişarea şi ştergerea acesteia se fac cu comanda
grid care lucrează ca un comutator. Se mai pot folosi sintaxele:
grid on - pentru afişare
grid off - pentru ştergere.
grid minor - lucrează ca un comutator şi afişează/ascunde liniuţele grid secundare.
grid (h,’on’)- activează reţeaua grid principală în sistemul de axe cu identificatorul h.
Controlul afişării liniilor reţelei grid se realizează prin următoarele proprietăţi ale
obiectului grafic axe:
- 'xgrid' 'on' /'off'
care afişează (on) sau nu (off) liniile grid perpendiculare pe axa x, prin fiecare diviziune de
gradare a axei (în mod similar, pentru axa y, există proprietatea 'ygrid');
- 'gridlinestyle' 'tiplinie'
care stabileşte tipul de linie folosit pentru reţeaua grid (continuă, întreruptă, linie-punct sau din
puncte), prin caracterele corespunzătoare, aceleaşi cu cele utilizate la stabilirea liniei de trasare a
graficelor.
- 'minorgridlinestyle' 'tiplinie'
care stabileşte tipul de linie folosit pentru reţeaua grid secundară (continuă, întreruptă, linie-
punct sau din puncte).

14
6. Adăugarea succesivă a reprezentărilor grafice într-un sistem de axe existent
(suprapunerea succesivă )
Utilizând comanda hold se pot adăuga grafice alături de altele existente într-un sistem de
axe.
hold on - care va determina adăugarea graficelor următoare peste cel curent, fără a-l
şterge, producându-se o rescalare a axelor dacă este cazul;
hold off - care va determina revenirea la setarea iniţială, conform căreia, la apelul unei
funcţii de reprezentare grafică, graficul anterior este şters.
După activarea mecanismului de suprapunere succesivă, oricare ar funcţia apelată pentru o
nouă reprezentare grafică, aceasta nu mai schimbă modul de scalare a axelor.

7. Divizarea ferestrei grafice


Sistemul MATLAB permite împărţirea ferestrei figură în mai multe ferestre grafice şi
afişarea în fiecare a câte unui sistem de axe. Crearea acestor ferestre şi controlul lor este realizat
de funcţia subplot care are mai multe sintaxe.
1) subplot(m,n,i)
împarte fereastra figură în m x n zone dreptunghiulare de afişare (m pe fiecare coloană şi n pe
fiecare linie) şi specifică fereastra cu numărul i ca fiind cea curentă (în care se va face
următoarea reprezentare grafică). Zonele de afişare sunt numerotate de la stânga la dreapta,
începând cu linia de sus.
Dacă fereastra figură a fost împărţită anterior, apelul funcţiei face numai specificarea
subferestrei curente în care se va crea noul sistem de axe.
2) subplot('Position',[xinitial yinitial lungimex lungimey])

creează un nou sistem de axe în poziţia şi cu dimensiunile precizate în vectorul [xinitial


yinitial lungimex lungimey].
3) h = subplot(...)

salvează identificatorul noului sistem de axe în variabila h.


4) subplot(h)

permite ca sistemul de axe cu identificatorul h să fie cel curent.


În cazul în care apelul unei funcţii subplot determină suprapunerea noului sistem de axe peste
unul existent, are loc ştergerea primului.

8. Vizualizarea detaliilor

Pentru a vizualiza porţiuni ale reprezentării grafice curente se foloseşte comanda zoom.
După primul apel al acesteia sau folosind sintaxa zoom on, se pot realiza efectele:
- folosind butonul stâng al mouse –ului este permisă specificarea zonei grafice ce va fi
detaliată;
- la fiecare apăsare a butonului stâng al mouse –ului limitele axelor vor fi schimbate cu un
factor de 2, permiţând evidenţierea detaliilor;
- printr-o dublă apăsare a butonului stâng al mouse –ului, se revine la limitele iniţiale.
După al doilea apel al acesteia sau folosind sintaxa zoom off se renunţă la aceste efecte.
Cu sintaxa zoom out, se revine la afişarea reprezentării grafice iniţiale.

15
9. Ştergerea axelor curente
Pentru ştergerea reprezentărilor grafice din axele curente se poate folosi funcţia cla cu două
sintaxe posibile:
1) cla - va şterge toate graficele trasate în sistemul de axe curent;
2) cla reset - în plus faţă de prima sintaxă, resetează toate proprietăţile obiectului axe
la valorile implicite, cu excepţia poziţiei acestuia.

10. Afişarea textului în spaţiul reprezentării grafice

Sistemul grafic MATLAB oferă multiple facilităţi privind afişarea textelor. Acestea pot fi
accesate fie prin comenzi MATLAB, fie utilizând editorul de plot. Orice efect obţinut cu editorul
de plot poate fi obţinut şi prin apelul comenzilor MATLAB. Există însă efecte, ca spre exemplu
afişarea unor etichete proprii pentru marcatorii de gradare a axelor, care nu pot fi obţinute cu
ajutorul editorului de plot.
Atunci când se decide utilizarea comenzilor grafice MATLAB sau a editorului de plot
trebuie ţinut seama că există următoarele diferenţe:
- adnotările create prin apelul de comenzi sunt obiecte grafice ancorate de sistemul de axe,
deci se vor muta odată cu acesta;
- adnotările create cu editorul de plot sunt independente de sistemul de axe;
- dacă se creează o adnotare cu editorul de plot, aceasta poate fi accesată pentru editarea
ulterioară cu ajutorul unei comenzi folosind identificatorul gco (”get current object”);
- dacă se utilizează caractere speciale în text (simboluri matematice sau litere greceşti) şi
acestea sunt create cu opţiunea Symbol din fereastra de dialog Edit Font Properties a
editorului de plot, textul obţinut nu mai poate fi editat ulterior prin comenzi MATLAB.

10.1. Utilizarea comenzilor MATLAB pentru afişarea textelor în orice poziţie a


sistemului de axe
Pentru sistemul grafic MATLAB, orientat pe obiecte, orice adnotare în spaţiul sistemului
de axe este un obiect grafic de tip text, care este copil al obiectului grafic axes.
Inserarea unui text în orice poziţie a spaţiului ferestrei figură care conţine un sistem de
axe se poate realiza prin comenzile text şi gtext.

Utilizarea comenzii text


Pentru a crea un obiect grafic de tip text într-o poziţie precizată în cadrul sistemului de
axe, se apelează comanda text.
1) text(x,y,'text')
afişează şirul de caractere 'text' începând cu poziţia dată de coordonatele (x,y) exprimate în
unităţile de măsură ale ultimului grafic.
2) text(x,y,'text','NumeProprietate',ValoareProprietate....)
permite, în plus faţă de sintaxa precedentă, utilizarea unor valori specificate pentru anumite
proprietăţi ale obiectului text, încă de la crearea acestuia.
În tabelul 3 sunt prezentate câteva din proprietăţile obiectelor grafice de tip text şi
valorile posibile ale acestora.
Se precizează câteva aspecte.
- În mod implicit, coordonatele prin care se specifică locaţia textului sunt exprimate în
unitatea de măsură a datelor din sistemul de axe şi sunt raportate la originea acestuia.
- Proprietăţile VerticalAlignment şi HorizontalAlignment controlează poziţia textului
faţă de punctul precizat ca locaţie a acestuia. Figurile 1 şi 2 ilustrează opţiunile fiecărei
proprietăţi şi corespondenţa acestora cu plasarea textului.

16
Fig. 1 Efectele valorilor proprietăţii Fig. 2 Efectele valorilor proprietăţii
HorizontalAlignment în cazul în care VerticalAlignment în cazul în care
VerticalAlignment este setată la valoarea HorizontalAlignment este setată la
Middle (valoarea implicită) valoarea Left (valoarea implicită)

Descrierea proprietăţii Valoarea proprietăţii


Numele proprietăţii

Poziţia şi dimensiunea obiectului Valori: vector cu 4 elemente


Extent grafic text (dreptunghiului care [left, bottom, width, height]
încadrează textul). Proprietate accesibilă doar pentru citire.

HorizontalAlignment Alinierea pe orizontală o şirului de Valori: left, center, right


caractere care formează textul Implicit: left

Position Poziţia dreptunghiului definit prin Valori: vector coordonate [x, y, z]


proprietatea Extent exprimat în unităţile de măsură specificate prin
proprietatea Units

Rotation Orientarea obiectului text Valori: scalar (grade)


Implicit: 0

Units Unităţile de măsură pentru Valori: pixels, normalized, inches,


proprietăţile Extent şi Position centimeters, points, data
Implicit: data (unitatea de măsură
folosită pentru datele reprezentate în
sistemul de axe părinte)

VerticalAlignment Alinierea pe verticală o şirului de Valori: top, cap, middle, baseline, bottom
caractere care formează textul Implicit: middle

FontAngle Înclinarea caracterelor Valori: normal, italic, oblique


Implicit: normal

FonfName Familia de fonturi Valori: un şir de caractere semnificând un font


acceptat de sistem sau şirul de caractere
FixedWidth
Implicit: Helvetica

FontSize Dimensiunea fontului Valori: dimensiune exprimtată în unitatea de


măsură exprimată prin proprietatea FontUnits
Implicit: 10 points

FontUnits Unitatea de măsură pentru Valori: points, normalized, inches,


proprietatea FontSize centimeters, pixels
Implicit: points

FontWeight Grosimea caracterelor Valori: light, normal, demi, bold


Implicit: normal

Color Culoarea textului Valori: vector [R G B] sau nume predefinit


Implicit: white
Tab. 3 Proprietăţi de bază ale obiectelor de tip text

17
- Există şi posibilitatea de a crea, printr-un singur apel al funcţiei text, mai multe obiecte de
tip text. Astfel:
o Pentru a afişa acelaşi text în mai multe locaţii din sistemul de axe, argumentele x
şi y sunt vectori ce conţin coordonatele punctelor de referinţă pentru plasarea
textului;
o Pentru a afişa texte diferite în locaţiile determinate de perechile abscisă-ordonată,
x şi y vor fi vectori de aceeaşi dimensiune, iar pentru argumentul al treilea există
variantele:
 matrice de tip char array având numărul de linii egal cu dimensiunea
vectorilor x şi y, fiecare linie conţinând textul dorit pentru locaţia
corespunzătoare;
Exemplu: text([0.1,0.2,0.3],[0.1,0.2,0.3],
[’text1’ ;’text2’ ;’text3’])
Există limitarea că numărul de caractere ale liniilor trebuie să fie acelaşi.
 vector linie de tip char array, textele dorite a fi afişate în fiecare poziţie
fiind separate prin caracterul “|”.
Exemplu : text([0.1,0.2,0.3],[ 0.1,0.2,0.3], ’text1|t2|t3’)
În acest caz, numărul caracterelor specificate între “|” poate fi diferit.
 vector de tip cell array, având dimensiunea egală cu cea a vectorilor x şi
y.
Exemplu: text([0.1,0.2,0.3],[ 0.1,0.2,0.3],{ ’text1’ ;’t2’ ;’t3’})
text([0.1,0.2,0.3],[ 0.1,0.2,0.3],{ ’text1’ ,’t2’ ,’t3’})
Numărul de caractere specificat pentru fiecare celulă a vectorului poate fi diferit.
- Se pot afişa mai multe linii de text într-o anumită locaţie dacă şirurile de caractere ale
liniilor de text formează liniile sau coloanele unui vector de tip cell array sau liniile unei
matrici de tip char array.
Exemple: text(0.1, 0.1,{'text1' 't2' 't3'})
text(0.1, 0.1,{'text1'; 't2'; 't3'})
text(0.1, 0.1,['text1'; 'text2'; 'text3'])
3) h = text(...)
returnează, în vectorul coloană h, identificatorii obiectelor text ce vor fi create prin această
comandă. Indiferent de forma de apel a funcţiei (argumentele specificate), aceasta acceptă
reţinerea identificatorilor într-o variabilă.

Utilizarea comenzii gtext


Pentru o plasare interactivă a textului, cu ajutorul mouse-ului, se poate folosi comanda
gtext('text')
Aceasta afişează şirul de caractere 'text' în câmpul grafic, aşteaptă deplasarea acestuia
pe grafic cu ajutorul mouse –ului, plasarea realizându-se la apăsarea oricărui buton al mouse –
ului sau a unei taste.

10.2. Etichetarea axelor


Precizarea şi afişarea semnificaţiei mărimilor reprezentate pe fiecare axă se face cu
funcţiile:
xlabel('text')
ylabel('text')
în care text este şirul de caractere care va fi afişat.
Deoarece textul afişat cu aceste comenzi constituie pentru sistemul grafic MATLAB un
obiect grafic de tip text, prin modificarea proprietăţilor acestui obiect pot fi stabilite
caracteristicile textului (tab.1).
Valorile proprietăţilor pot fi specificate încă de la crearea obiectului text.
Exemplu:
xlabel('x','fontname','TimesNewRoman','fontsize',12,'color',[1 0.4 0.6])

18
Pentru afişarea etichetelor pe axe există şi proprietăţile 'xlabel', respectiv 'ylabel'
cărora trebuie să li se asocieze identificatorii obiectelor text ce se doresc a fi afişate.
Exemple de sintaxe valide:
set(gca,’xlabel’, text(x,y,’eticheta’))
set(gca,’xlabel’, h)
Pentru a specifica textul care să fie utilizat alături de fiecare linie de gradare a axelor, se
modifică valorile proprietăţilor 'xticklabel', respectiv 'yticklabel', ale obiectului axe.
Valoarea acceptată pentru o astfel de proprietate este un vector de tip cell array sau o matrice de
tip char array, componentele acestora conţinând şirurile de caractere ce se doresc a fi folosite
pentru etichetare.
Exemple: Oricare din sintaxele
set(gca, 'xticklabel', {'d1', 'd2'})
set(gca, 'xticklabel', ['d1'; 'd2'])
va înlocui etichetele numerice generate de MATLAB în mod implicit, cu etichetele d1 şi d2 care vor fi afişate
succesiv sub liniile de gradare ale axei x.
Dacă dimensiunea vectorului sau matricii specificate este mai mică decât numărul de
gradaţii al axei, textele vor fi repetate ciclic.

10.3 Afişarea titlului reprezentării grafice


Pentru fiecare sistem de axe se poate specifica un titlu, care va fi afişat deasupra spaţiului
delimitat de sistemul de axe şi centrat pe orizontală. Acesta va fi plasat cu funcţia title care poate
avea oricare din sintaxele de mai jos.
1) title('text')
în care 'text' este şirul de caractere ce va fi afişat.
2) title('text','NumeProprietate',ValoareProprietate....)
specifică, la creare, valorile unor proprietăţi ale obiectului grafic de tip text pe care
comanda îl creează.
3) h = title(...) furnizează, în variabila h, identificatorul obiectul
text creat.

Obs. Pentru că una din proprietăţile sistemului de axe are este 'title', un titlu poate fi asociat sistemului de
axe prin precizarea valorii acestei proprietăţi.
Exemple de sintaxe valide:
set(gca,’title’, text(x,y,’TITLUL DORIT’))
set(gca,’xlabel’, h)

10.4 Inserarea caracterelor speciale în obiectele de tip text


Obiectele de tip text (inclusiv titluri şi etichete de axe) suportă un subset de caractere
TeX (tabelul 4) care permit utilizarea simbolurilor (litere greceşti şi simboluri matematice).
Proprietatea Interpreter a obiectelor de tip text controlează modul de interpretare a
caracterelor. Astfel, dacă valoarea acesteia este Tex (valoare implicită), codurile de caractere
TEX sunt interpretate ca atare, cu condiţia ca secvenţa TEX să fie precedată de caracterul "\".
Dacă se setează proprietatea Interpreter la valoarea none, MATLAB interpretează caracterele
speciale în mod literar.
Secvenţa de caractere Simbolul Secvenţa de caractere Simbolul Secvenţa de caractere Simbolul
TEX TEX TEX

\alpha \upsilon \sim ~

\beta \phi \leq

\gamma \chi \infty

\delta \psi \clubsuit

\epsilon \omega \diamondsuit

19
\zeta \Gamma \heartsuit

\eta \Delta \spadesuit

\theta \Theta \leftrightarrow

\vartheta \Lambda \leftarrow

\iota \Xi \uparrow

\kappa \Pi \rightarrow

\lambda \Sigma \downarrow

\mu µ \Upsilon \circ º

\nu \Phi \pm ±

\xi \Psi \geq

\pi \Omega \propto

\rho \forall \partial

\sigma \exists \bullet •

\varsigma \ni \div ÷

\tau \cong \neq

\equiv \approx \aleph

\Im \Re \wp

\otimes \oplus \oslash

\cap \cup \supseteq

\supset \subseteq \subset

\int \in \o

\rfloor \lceil \nabla

\lfloor \cdot · \ldots ...

\perp \neg ¬ \prime '

\wedge \times x \0

\rceil \surd \mid |

\vee \varpi \copyright ©

\langle \rangle

Tab. 4 Lista secvenţelor de caractere TEX utilizate pentru afişarea simbolurilor


De asemenea, există secvenţe TEX prin care se pot controla caracteristicile fontului
utilizat:
• \bf - font bold
• \it - font italic

20
• \sl - font oblic (când este disponibil)
• \rm - font normal
• \fontname{fontname} – specifică numele familiei de fonturi utilizate
• \fontsize{fontsize} – specifică dimensiunea fontului în FontUnits.
Efectul acestor caracteristici rămâne numai până la sfârşitul şirului de caractere sau numai în
interiorul contextului definit de acolade{ }.
Pentru a utiliza indici şi exponenţi, se folosesc caracterele " _" , respectiv " ^ ",
modificarea afectând textul cuprins între acoladele imediat următoare.
Exemplu de utilizare a caracterelor TEX:
Asociind unui şir de caractere secvenţa
'\bullet\leftarrow\fontname{times}0.25{\ite}^{-0.005{\itt}} '

textul afişat va fi .

10.5 Afişarea legendei


Pentru a afişa o legendă asociată graficelor din sistemul de axe curent se apelează
comanda legend. Referitor la aceasta, există mai multe sintaxe.
1) legend('text1',' text2',...)
afişează o legendă în sistemul de axe curent utilizând şirurile de caractere specificate
pentru a eticheta obiectele grafice create în sistemul de axe. Dacă numărul obiectelor
grafice este mai mare decât al textelor specificate, vor apărea în legendă doar etichetele
pentru care s-au specificat textele. Dacă s-au specificat mai multe texte pentru etichete
decât numărul obiectelor grafice, în legendă vor apărea toate textele, iar cele care nu au
corespondent în obiecte grafice nu au în faţă nici un model de linie sau marcator.
Legenda este poziţionată în interiorul spaţiului delimitat de sistemul de axe, în colţul din
dreapta sus.
2) legend(h, 'text1',' text2',...)
afişează o legendă, asociind componentelor vectorului h al identificatorilor obiectelor
grafice care se doresc a fi etichetate în legendă textele specificate în şirurile de caractere
'text1',' text2', ...
3) legend(matrice_caractere)
inserează o legendă care va avea liniile matricei şir de caractere drept etichete. Se obţine
acelaşi efect ca la sintaxa
legend(matrice_caractere(1,:), matrice_caractere(2,:),...).
4) legend(h, matrice_caractere)
asociază fiecare linie a matricei matrice_caractere cu obiectul grafic corespunzător din
vectorul h al identificatorilor.
5) legend(h_axe,...)
afişează legenda pentru sistemul de axe identificat prin h_axe
6) legend('off'),
legend(h_axe,'off')
şterg legenda din sistemul de axe curent, respectiv din sistemul de axe specificat prin
h_axe
7) h_legenda = legend
furnizează, în variabila h_legenda, identificatorul legendei din sistemul de axe curent
sau un vector gol dacă nu există o legendă.
8) legend(...,pos)
utilizează argumentul pos pentru a determina unde să fie poziţionată legenda.
• pos = -1 plasează legenda în afara sistemului de axe, în dreapta acestuia şi sus.
• pos = 0 plasează legenda în interiorul sistemului de axe, astfel încât să acopere cât
mai puţine puncte din reprezentările grafice.
• pos = 1 plasează legenda în colţul din dreapta sus al sistemului de axe (implicit).
• pos = 2 plasează legenda în colţul din stânga sus al sistemului de axe.
• pos = 3 plasează legenda în colţul din stânga jos al sistemului de axe.

21
• pos = 4 plasează legenda în colţul din dreapta jos al sistemului de axe.
9) [h_legenda,h_object] = legend(...)
furnizează identificatorul legendei (h_legenda) şi identificatorii obiectelor grafice (de tip
line, text ş.a.) folosite în legendă (h_object). Aceşti identificatori permit modificarea
proprietăţilor respectivelor obiecte grafice.
Precizări:
- Fiecare sistem de axe poate avea numai o legendă, iar ordinea în care sunt asociate
textele cu obiectele grafice este, în mod implicit, cea în care sunt reţinute obiectele în
proprietatea Children a obiectului Axes.
- Poziţia legendei poate fi modificată uşor, prin tragere cu ajutorul mouse-ului.
- Textele asociate etichetelor din legendă pot fi editate după un dublu clic cu mouse stânga
pe respectivul text.

11. Reprezentarea grafică 2D cu bare


Datele conţinute în vectori sau matrice pot fi reprezentate grafic sub forma unor bare.
În general, un grafic cu bare afişează datele ca bare orizontale sau verticale.
11.1. Reprezentarea grafică cu bare verticale

Reprezentarea grafică cu bare verticale, pline cu culoare, a valorilor unui vector sau
matrice se realizează prin apelul funcţiei bar.
De reţinut! Fiecare reprezentare grafică cu bare astfel creată este un obiect grafic de tip
“patch”, ca în cazul comenzii fill.
Există mai multe sintaxe posibile ale funcţiei bar.
• bar(y)
Este sintaxa cea mai simplă (un singur argument), dar cea mai rar folosită pentru că nu
poate fi controlată valoarea datelor reprezentate pe abscisă, argumentul funcţiei conţinând
doar datele reprezentate pe ordonată.
- Dacă y este un vector, se va trasa o bară pentru fiecare componentă, având înălţimea
valorii componentei şi abscisa egală cu indexul (numărul de ordine al acesteia). Lăţimea
barelor este de 0,8 unităţi de reprezentare.
Exemplu: secvenţa » a=[2 5 9 12];
» bar(a) ; grid on;
are ca efect afişarea reprezentării
15

10

0
1 2 3 4
- Dacă y este o matrice de dimensiunea m x n, vor fi afişate n seturi de bare de aceeaşi
culoare (câte una pentru fiecare coloană), fiecare formată din m bare;
Exemplu: secvenţa » a=[2 5 9 12;10 8 6 4;3 6 9 12]';
are ca efect crearea matricei

22
 2 10 3 
5 8 6 
a= 
9 6 9 
 
 12 4 12 

iar apelul » bar(a) ; grid on;


are ca efect afişarea, cu culori diferite, a trei grafice cu bare, câte unul
pentru fiecare coloană
15

10

0
0 1 2 3 4 5
• bar(x,y)
Este cea mai folosită sintaxă, pentru că permite precizarea datelor reprezentate atât pe
ordonată, cât şi pe abscisă.
- Dacă x şi y sunt vectori de aceeaşi dimensiune, elementele lui x trebuie să fie în ordine
crescătoare, sintaxa având ca efect afişarea unei bare pentru fiecare element al lui y în
poziţia specificată de elementul cu aceeaşi poziţie din x.
Exemplu: secvenţa » x=[2 5 9 12];y=[10 20 5 2];
» bar(x,y); grid on;
are ca efect afişarea reprezentării
20

15

10

0
2 5 9 12
- Dacă x este un vector de dimensiunea n, iar y o matrice de dimensiunea n x m, vor fi
reprezentate m grafice cu baruri, câte unul pentru fiecare coloană a matricei.
Exemplu: secvenţa » x=[2 5 9 12];y=[10 20 5 2;1 2 3 4;2 4 6 8]';
» bar(x,y); grid on
are ca efect afişarea reprezentării
20

15

10

0
2 5 9 12

23
• bar(..., latime)
Funcţia bar acceptă ca argument final un număr prin care se specifică lăţimea tuturor
barelor şi se controlează separarea acestora în interiorul unui grup. Lăţimea implicită este
0.8, iar dacă nu se specifică argumentul x, barele dintr-un grup au un separator îngust.
Dacă se specifică valoarea 1, barele grupului vor fi lipite, iar pentru un număr
supraunitar, barele se vor suprapune.
• bar(..., culoare)
Argumentul culoare (un caracter sau un şir de caractere) permite specificarea culorii de
reprezentare a barelor, la fel ca la funcţia plot.
• bar(..., stil)
- Prin argumentul stil (un şir de caractere), este permisă specificarea stilului de bare
folosit atunci când se reprezintă mai multe grafice cu bare în acelaşi sistem de axe. Există
două stiluri posibile de bare:
- 'group' sau 'grouped' - este stilul implicit, care afişează barele corespunzătoare
aceleiaşi abscise grupate în jurul acesteia. Fiecărei linii a matricei y îi corespunde o
abscisă şi deci un grup care conţine un număr de bare egal cu numărul de coloane ale
matricei.
- 'stack' sau 'stacked'- afişează barele din grup suprapuse, obţinând astfel doar o bară
pentru fiecare linie din y. Înălţimea barei este suma elementelor liniei. Fiecare bară este
multicolorată cu culorile corespunzătoare elementelor şi arată ponderea fiecărui element
al liniei în sumă.
Exemplu: secvenţa » x=[2 5 9 12];y=[10 20 5 2;1 2 3 4;2 4 6 8]';
» bar(x,y ,0.2,'stack'); grid on
are ca efect afişarea reprezentării
30

20

10

0
2 5 9 12

• [xb,yb] = bar(... )
nu reprezintă graficele, dar calculează vectorii xb şi yb astfel încât graficul cu bare să fie
trasat ulterior cu funcţia plot(xb,yb). Această sintaxă este utilă atunci când se doreşte un
control mai mare asupra graficului, spre exemplu includerea reprezentării cu bare într-o
reprezentare grafică mai complexă sau combinarea mai multor grafice cu bare.
• h = bar(... )
înregistrează, în variabila h (de tip scalar sau vector dacă sunt mai multe grafice de tip bar),
identificatorii obiectelor de tip “patch” create la apelul comenzii.

11.2. Reprezentarea grafică cu bare orizontale

Reprezentarea grafică cu bare orizontale nu este posibilă decât începând cu versiunea


MATLAB 5.0. În acest scop, se apelează funcţia barh, sintaxele fiind aceleaşi cu cele ale
funcţiei bar.
Exemplu: Secvenţa
» y=[2 4 6;9 7 5];
» barh(y,'stack'); grid on;

24
realizează reprezentarea grafică de mai jos

APLICAŢIE – Suprapunerea unei reprezentări grafice cu bare cu o reprezentare grafică


în coordonate liniare
Etape de lucru:
• Se pregătesc datele de reprezentat: (x, y1) pentru reprezentarea grafică cu bare şi (x, y2)
pentru reprezentarea grafică în coordonate liniare (cu funcţia plot)
» x=0:2:10;y1=x.^2;y2=10*y1;
• Se realizează reprezentarea grafică cu bare cu funcţia bar având caracteristicile dorite
(culoare, ..)
» bar(x,y1,'w');
• Se personalizează modul de prezentare a sistemului de axe(etichete pe axe, ..)
» xlabel('x');ylabel('y_1');
• Se salvează identificatorul sistemului de axe curent într-o variabilă
» h1 = gca;
• Se creează un nou sistem de axe cu aceeaşi poziţie ca cel anterior
» h2 = axes('Position',get(h1,'Position'));
• Se realizează reprezentarea grafică în coordonate liniare cu funcţia plot şi caracteristicile
dorite (culoare, ..)
» plot(x,y2,'k','LineWidth',3)
• Se stabileşte locaţia axei y a noului sistem de axe la dreapta, caracteristica de a fi
transparent (fără culoare) şi de a nu avea etichete la liniuţele de gradare de pe axa x
» set(h2,'YAxisLocation','right','Color','none','XTickLabel',[])
• Se etichetează axa y a noului sistem de axe
» ylabel('y_2');
• Se afişează reţeaua grid
» grid on
Efectul secvenţei anterioare de operaţii va fi următorul:
100 1000

80 800

60 600
y1

y2

40 400

20 200

0 0
0 2 4 6 8 10
x

25
12. Reprezentarea discretă a datelor
Reprezentarea grafică a semnalelor discrete, sub forma unor linii verticale terminate cu un
marcator (un cerculeţ gol în mod implicit) la extremitatea opusă axei, se realizează cu funcţia
stem. În mod implicit, linia de trasare este continuă şi are aceeaşi culoare cu marcatorul. Există
mai multe sintaxe posibile.
• stem(y) – reprezintă datele conţinute în vectorul y, abscisele fiind indecşii elementelor.
Exemplu: secvenţa » y=[2 5 9 12];
» stem(y)
» grid on;
are ca efect afişarea reprezentării
15

10

0
1 1.5 2 2.5 3 3.5 4

• stem(x,y) – reprezintă grafic dependenţa y = y(x). Dacă x este un vector linie cu n


componente, iar y o matrice de dimensiune n x m, vor fi reprezentate m grafice suprapuse,
câte unul pentru fiecare coloană, folosind culorile predefinite în mod ciclic.
• stem(x,y, stil_linie) – permite, faţă de sintaxa precedentă, specificarea stilului de
linie (pentru liniile verticale), tipului de marcator (pentru marcatorul din capăt) şi a
culorii de reprezentare (aceeaşi pentru ambele), ca la funcţia plot.
• stem(x,y, 'fill') – determină umplerea cu culoare a marcatorului.
Pot fi specificate simultan ambele argumente suplimentare (stil_linie şi 'fill'),
fără a avea importanţă ordinea acestora.
• h = stem(...) – reţine, în variabila h de tip vector, identificatorii obiectelor grafice
create, respectiv a obiectelor de tip “line”.
De reţinut! În Matlab 6.5, la apelul funcţiei stem, dacă g este numărul de grafice afişate,
vor fi create 2g+1 obiecte grafice de tip “line”, câte unul pentru marcatorii din vârfuri şi liniile
verticale (atenţie, aceasta este ordinea) şi încă unul corespunzător datelor [xmin, xmax], [0 0] (o
linie orizontală definită de două puncte şi suprapusă peste axa x).
Exemplu: secvenţa
» y=[2 5 9 12];
» h=stem(y); grid on;
» set(h(1),'color','b','marker','p','markersize',16,'linewidth',1,'markerfacecolor','c')
» set(h(2),'color','k','linewidth',3)
are ca efect afişarea reprezentării
12

10

0
1 1.5 2 2.5 3 3.5 4

Observaţie: Nu este admisă o sintaxă de genul [xs, ys]=stem(x,y) , similară funcţiei bar,
care să permită reţinerea doar datele de reprezentat, fără a avea efect grafic.

26
13. Reprezentarea graficelor în trepte
Reprezentarea în trepte a graficelor este utilă pentru diagramele sistemelor numerice de
eşantionare şi prelucrare a datelor. Este ca o reprezentare cu bare alipite, la care lipsesc liniile
verticale interne. Această reprezentare se realizează cu funcţia stairs apelată cu una din
sintaxele:
• stairs(y) – reprezintă graficul în trepte al elementelor vectorului y;
Exemplu: secvenţa » y=[2 5 9 12];
» stairs(y)
» grid on;
are ca efect afişarea reprezentării
12

10

2
1 1.5 2 2.5 3 3.5 4

• stairs(x,y) - reprezintă grafic, în trepte, dependenţa y = y(x). Dacă x este un vector linie
cu n componente, iar y o matrice de dimensiune n x m, vor fi reprezentate m grafice
suprapuse, câte unul pentru fiecare coloană. Vor fi folosite culorile predefinite, în mod
ciclic. Este permisă specificarea, printr-un argument suplimentar (ca la funcţia plot), a
culorii şi liniei de reprezentare.
• stairs(x,y,stil_linie )
Observaţie: datele conţinute în vectorul x al absciselor trebuie să fie în ordine crescătoare şi
echidistante.
Sintaxele
• [xs,ys] = stairs(y)
• [xs,ys] = stairs(x,y)
nu realizează nici o reprezentare grafică, dar furnizează vectorii xs şi ys astfel încât
plot(xs,ys) să poată trasa graficul în trepte.
• h = stairs(. . .)
reţine, în variabila h, identificatorul/identificatorii obiectelor
grafice de tip “line” create.
De reţinut! Apelul funcţiei stairs determină crearea unuia sau mai multor obiecte de tip
“line” care pot fi modificate ulterior cu editorul de plot sau prin proprietăţile acestora, cu
funcţia set.
Exemplu: secvenţa
» x=0.5:0.5:2.5;y=[10:5:30;20:10:60]';
» h=stairs(x,y);
»set(h(1),'color','k','marker','p','markersize',12,'linewidth',1.5,'markerfacecolor','c')
» set(h(2),'color','b','marker','o','markersize',10,'linewidth',2)
» grid on;
are ca efect afişarea reprezentării
60

50

40

30

20

10
0.5 1 1.5 2 2.5

27
14. Obţinerea coordonatelor punctelor din spaţiul sistemului de axe,
utilizând mouse-ul
Funcţia MATLAB ginput permite indicarea punctelor din spaţiul ferestrei figură,
utilizând mouse-ul pentru poziţionarea cursorului, în scopul obţinerii coordonatelor acestora.
Există trei sintaxe posibile ale acesteia.
1) [x,y] = ginput(n)
permite indicarea succesivă a n puncte şi furnizează coordonatele în vectorii coloană x şi y.
Încheierea operaţiei înainte de selectarea celor n puncte se poate realiza apăsând tasta Enter.
2) [x,y] = ginput
permite reţinerea în vectorii coloană x şi y a coordonatelor unui număr nelimitat de puncte,
până la apăsarea tastei Enter.
3) [x,y,b] = ginput(...)
permite, în plus faţă de celelalte două sintaxe, reţinerea în vectorul b a informaţiilor privind
modul cum a fost realizată selectarea punctului.
Astfel:
- pentru selectare prin apăsarea butonului stâng al mouse-ului, se obţine valoarea 1;
- pentru selectare prin apăsarea butonului din mijloc al mouse-ului, se obţine valoarea 2;
- pentru selectare prin apăsarea butonului drept al mouse-ului, se obţine valoarea 3;
- pentru selectare prin apăsarea unei taste, se obţine un număr semnificând codul ASCII
asociat;
Observaţii
- Dacă la apelul funcţiei ginput, nu există un sistem de axe în fereastra figură, la indicarea
primului punct, este creat în mod automat un sistem de axe cu limitele implicite (valorile
minime 0 şi valorile maxime 1).
- Dacă se indică puncte din mai multe sisteme de axe, coordonatele acestora sunt raportate la
sistemele de axe respective.

15. Reprezentări grafice 3D


Sistemul MATLAB oferă o serie de funcţii pentru crearea şi controlul modului de afişare a
graficelor în spaţiul tridimensional.

15.1. Reprezentarea grafică tridimensională a datelor conţinute în vectori sau


matrice

Pentru a afişa sub forma unui grafic tridimensional datele conţinute în trei vectori sau
matrice se foloseşte funcţia plot3 cu una din sintaxele:
plot3(X1,Y1,Z1,...)
plot3(X1,Y1,Z1, Specificare_Atribute,...)
plot3(..., 'Nume_Proprietate', Valoare_Proprietate, ...)
h = plot3(...)
Funcţia plot3(X1,Y1,Z1,...), unde X1, Y1, Z1 sunt vectori de aceeaşi dimensiune,
afişează, în spaţiul tridimensional, o curbă obţinută prin interpolarea liniară a punctelor ale căror
coordonate sunt elementele vectorilor X1, Y1 şi Z1. Ca şi în cazul funcţiei plot, sunt acceptate
mai multe seturi de date, deci mai multe triplete de argumente.
Dacă X1, Y1, Z1 sunt matrice de aceeaşi dimensiune, MATLAB reprezintă câte o curbă
pentru fiecare coloană a matricelor, folosind ciclic culorile de bază.
Argumentul opţional Specificare_Atribute (un şir de maxim trei caractere) permite
specificarea stilului de linie, de marcator şi culoarea liniilor plotate (ca la funcţia plot).
Prin perechi de argumente de tipul 'Nume_Proprietate', Valoare_Proprietate, se pot
stabili, încă de la creare, oricâte valori ale proprietăţilor obiectelor grafice de tip Line create prin
acest apel de funcţie.

28
Sintaxa h = plot3(...) furnizează vectorul coloană h, care conţine identificatorii tuturor
obiectelor grafice de tip Line create.

15.2. Reprezentarea grafică a suprafeţelor tridimensionale

Sistemul MATLAB poate crea suprafeţe 3D fie sub forma unei reţele (“mesh”) de linii
colorate care conectează punctele de definiţie, fie sub forma unei suprafeţe pline.
Reprezentarea grafică 3D a matricelor de date, sub cele două forme, se realizează cu funcţiile
mesh, respectiv surf şi alte funcţii derivate din acestea.
Suprafeţele sunt parametrizate, în sensul că fiecare punct de definiţie al acesteia este
specificat printr-un triplet (X(i,j), Y(i,j), Z(i,j)), în care parametrii numere întregi i şi j variază
continuu într-un domeniu impus (1≤ i ≤ m, 1≤ j ≤ n). Astfel, nodurile care definesc suprafaţa sunt
trei matrice X, Y şi Y, de dimensiune m x n. Pentru specificarea culorii, este necesară încă o
matrice C, de aceeaşi dimensiune m x n.

15.3. Reprezentarea suprafeţelor sub forma unei reţele (“mesh”)

Există trei funcţii MATLAB pentru reprezentarea grafică 3D a matricelor de date sub
forma unei reţele de linii colorate:
- mesh, care realizează o suprafaţă “mesh” fără linii de contur;
- meshc, care adaugă reţelei linii de contur reprezentate sub suprafaţă;
- meshz, care adaugă reţelei un plan de referinţă la cota zero (un piedestal).
Fiecare dintre acestea poate avea una din sintaxele de mai jos, exemplificate pentru funcţia
mesh.
mesh(X,Y,Z,C)
mesh(X,Y,Z)
mesh(Z)
h = mesh(...)
În cazul cel mai general, când funcţiile au patru argumente, sunt create suprafeţe
parametrizate specificate prin matricele X, Y şi Z, cu culorile specificate prin matricea C.
MATLAB realizează o transformare lineară asupra datelor din C pentru a obţine culorile din
paleta de culori curentă. Dacă X, Y şi Z sunt matrice, C trebuie să aibă aceeaşi dimensiune ca şi
acestea.
Sintaxa mesh(X,Y,Z), în care matricea C este omisă, consideră C=Z, culoarea fiind
proporţională cu înălţimea suprafeţei.
Dacă X şi Y sunt vectori de dimensiune n, respectiv m, iar Z este o matrice de
dimensiune m x n, punctele de coordonate (X(j), Y(i), Z(i,j)) sunt intersecţiile liniilor de grid
care compun reţeaua “mesh”. Se constată că indexul lui Y corespunde coloanelor lui Z, în timp
ce indexul lui X corespunde liniilor lui Z.
Dacă X şi Y sunt matrice, intersecţiile liniilor reţelei au coordonatele (X(i,j), Y(i,j),
Z(i,j)).
Cu sintaxa mesh(Z) se creează o reţea „mesh” care utilizează X = 1:n şi Y = 1:m, unde
[m,n]=size(Z), iar culoarea este proporţională cu înălţimea suprafeţei.
Identificatorul obiectului grafic de tip surface creat de aceste funcţii poate fi reţinut într-o
variabilă, dacă se utilizează sintaxa h=mesh(...), respectiv h=meshc(...) sau h=meshz(...).

15.4. Reprezentarea suprafeţelor pline

Pentru reprezentarea grafică a suprafeţelor pline se folosesc funcţiile surf şi sulfc.


Sintaxele acestora şi semnificaţia argumentelor sunt similare celor ale funcţiilor utilizate pentru
reprezentarea suprafeţelor sub forma unei reţele de linii. Spre deosebire de surf, funcţia surfc
afişează şi liniile de nivel, pe acelaşi grafic şi sub suprafaţă.

29
15.5. Reprezentarea grafică a funcţiilor de două variabile

Pentru a reprezenta grafic o funcţie de două variabile, y = f(x,y), sub forma unei suprafeţe
de tip reţea de linii colorate sau suprafaţă plină, înainte de apelul funcţiei grafice dorite este
necesară generarea matricelor X şi Y ce definesc domeniul de definiţie prin suprafeţe
parametrizate.
Pentru transformarea domeniului specificat prin doi vectori x şi y de dimensiuni 1 x n,
respectiv 1 x m, în matricele X şi Y de dimensiuni m x n, astfel încât liniile lui X sunt copiile lui
x, iar coloanele lui Y sunt copiile lui y, se foloseşte funcţia meshgrid, care poate avea una din
sintaxele:
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x)
De remarcat că sintaxa [X,Y] = meshgrid(x) este echivalentă cu [X,Y] =
meshgrid(x,x).

15.6. Reprezentarea obiectelor 3D predefinite

În MATLAB există funcţii predefinite pentru reprezentarea unei sfere şi a unui cilindru.
Generarea unei sfere cu raza egală cu unitatea se realizează cu funcţia sphere, care poate
fi utilizată cu una din sintaxele de mai jos.
sphere(n)
sphere
[X,Y,Z] = sphere(...)
Apelată cu prima sintaxă, funcţia reprezintă grafic suprafaţa unei sfere formată din n x n
suprafeţe elementare. Nespecificarea argumentului n presupune utilizarea valorii implicite a
acestuia, n=20.
Cu ultima sintaxă, sunt create cele trei matrice X, Y şi Z cu coordonatele sferei unitate,
fără a afişa suprafaţa sferei. Aceste coordonate vor fi utilizate ulterior ca argumente ale funcţiei
surf sau mesh pentru reprezentarea grafică a suprafeţei sferei.
Generarea unui cilindru (sau forme geometrice derivate din acesta) cu înălţimea egală cu
unitatea se realizează cu una din sintaxele de mai jos ale funcţiei cylinder.
[X,Y,Z] = cylinder

[X,Y,Z] = cylinder(r)

[X,Y,Z] = cylinder(r,n)

cylinder(...)

Apelată cu argumentele de ieşire X, Y şi Z, funcţia nu are nici un efect grafic, creându-se


doar matricele cu coordonatele necesare reprezentării grafice ulterioare cu una din funcţiile mesh
sau surf.
Prin argumentele de intrare, în cazul cel mai general r şi n, se particularizează aspectul
obiectului grafic, fiind posibilă astfel şi reprezentarea grafică a conurilor, piramidelor,
trunchiurilor de con, trunchiurilor de piramidă sau a unui corp obţinut ca o dispunere succesivă a
unor astfel de corpuri de-a lungul axei z.
Prin argumentul r (vector sau scalar), se specifică razele cercurilor circumscrise ale
poligoanelor regulate care formează bazele formelor geometrice 3D (de înălţime egală) ce
compun obiectul grafic de tip surface, dispuse consecutiv în intervalul de o unitate al axei Z.
Dacă r este un vector cu m elemente, vor exista (m-1) astfel de forme geometrice 3D. Dacă r
este un scalar, va fi generată o singură formă geometrică şi va fi considerată aceeaşi valoare a
razei pentru baza inferioară şi baza superioară. Valoarea implicită a argumentului r este 1.
Argumentul n, întotdeauna un scalar, specifică numărul de laturi ale poligoanelor
regulate care formează bazele formelor geometrice 3D. Valoarea implicită a acestuia este 20.
30
Sintaxele fără argumente de intrare sunt echivalente specificării valorilor implicite ale
acestora.
Sintaxele fără argumente de ieşire reprezintă grafic, în fereastra figură curentă, cu funcţia
surf, obiectul de tip suprafaţă cu aspectul particularizat prin argumentele de intrare (dacă
există).

15.7. Stabilirea culorilor

Pentru afişarea culorilor asociate suprafeţelor, sistemul MATLAB foloseşte două tehnici:
- culori indexate, care asociază fiecărui punct din datele ce definesc suprafaţa un index
din paleta de culori a ferestrei figură;
- truecolor, conform căreia suprafeţele sunt colorate prin specificarea explicită a culorilor,
spre exemplu prin triplete RGB.
Indiferent de metoda folosită, afişarea culorilor depinde de modul de colorare (“shading”)
folosit.
Referitor la culori, la crearea unei suprafeţe 3D există trei posibilităţi:
- să nu fie specificate explicit culorile, caz în care MATLAB generează matricea de culori
asociate datelor folosind datele din matricea Z;
- specificarea unei matrice de culori, egală ca dimensiune cu matricea Z;
- specificarea unui triplet RGB pentru fiecare element din matricea de date Z, fapt ce
presupune utilizarea tehnicii truecolor.
Paleta de culori (“colormap”) este o matrice cu trei coloane, fiecare linie definind o
culoare printr-un vector RGB. Conţinutul acesteia este controlat prin funcţia colormap (vezi
lucrarea 8).
În sistemul grafic MATLAB există mai multe modele predefinite de culori:
• autumn, care foloseşte nuanţe bazate pe roşu, portocaliu şi galben;
• bone, o paletă cu nuanţe de albastru şi gri;
• colorcube, care determină afişarea mai multor suprafeţe mici cu culori din spaţiul RGB;
• cool constă în nuanţe de culori care variază lent de la albastru deschis spre mov;
• copper afişează nuanţe de culori de la negru spre arămiu;
• flag afişează zone colorate cu roşu, alb, albastru şi negru;
• gray foloseşte nuanţe de gri;
• hot variază lent de la negru la alb prin nuanţe de roşu, portocaliu şi galben;
• hsv (“hue-saturation-value”) începe cu roşu, trece prin galben, verde, albastru şi mov,
revenindu-se la roşu;
• jet trece de la albastru la roşu prin albastru deschis, galben şi portocaliu;
• lines creează o paletă cu culorile specificate prin proprietatea ColorOrder şi nuanţe de
gri;
• pink conţine nuanţe derivate din culoarea roz;
• prism repetă şase culori: roşu, portocaliu, galben, verde, albastru şi violet;
• spring constă în culori derivate din mov şi galben;
• summer constă în culori derivate din verde şi galben;
• white nu foloseşte decât culoarea alb;
• winter constă în culori derivate din albastru şi verde.
Pentru a crea o paletă de culori bazată pe un anumit model şi care să conţină un număr impus
de culori, se foloseşte sintaxa
colormap(model(n))
în care model este numele modelului, iar n numărul de culori dorite.
Dacă nu se specifică un număr de culori, noua paletă va avea dimensiunea paletei de culori
curente.
Paleta implicită de culori este jet(64).

31
Pentru afişarea paletei de culori curente în fereastra figură, într-un dreptunghi lângă
sistemul de axe, se foloseşte funcţia colorbar. Cu sintaxa colorbar('vert') se inserează o
bară de culori verticală, iar cu sintaxa colorbar('horiz') se inserează o bară de culori
orizontală.

15.8. Controlul modului de colorare

Stabilirea modului de colorare a obiectelor grafice de tip surface şi patch se realizează prin
funcţia shading, care are trei sintaxe posibile:
shading flat – fiecare zonă de culoare şi segment al reţelei de linii este umplut cu o
culoare constantă determinată de punctul final al segmentului sau colţului zonei care are cel mai
mic index sau indici;
shading faceted – corespunde modului shading flat, afişându-se şi liniile din reţea colorate
cu negru; este modul de colorare implicit;
shading interp – stabileşte culoarea de reprezentare a fiecărui segment şi zonă elementară
a suprafeţei ca o nuanţă rezultată din interpolarea liniară a culorilor capetelor liniei sau colţurilor
suprafeţei.

32

S-ar putea să vă placă și