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, curente.

'Position')

furnizează vectorul pozi ie al figurii

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 figuriafectează 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. 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.
plot (x1 ,y 1,x 2, y2…)

b) plot (x, y)

• • •
c)

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, valoare_proprietate2… ) ‘nume_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.
Simbol y m c r Culoare Semnifica ie galben mov albastru-deschis roşu Tip linie Simbol Semnifica ie continuă -întreruptă : punctată -. linie-punct 5 Simbol . o x + Tip marcator Semnifica ie punct cerc marcatorul x plus

g b w k

verde albastru alb negru

* s d v ^ < > p h

asterisc pătrat diamant 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 pentagrama (stea cu 5 col uri) hexagrama (stea cu 6 col uri)

Tab.1 Simbolurile şi semnifica iile caracteristicilor liniei de trasare
f) plo t(x1 , 'cul 2_t ipl ini e2 _m arc2 ', …) y 1,' cu l1_t ipl ini e1_ ma rc 1',x 2, y2,

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, vectormatrice 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 – re ine identificatorul obiectului creat în variabila h.

figură).
h = axes(...) 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ă iar ymin şi ymax sunt limita inferioară, respectiv superioară pentru ordonată.

pentru abscisă,

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' 'yMinortick' 'on' /'off' '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 c) axis('normal')
axis('equal', 'tight') sau axis equal tight 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ă, liniepunct 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 HorizontalAlignment în cazul în care VerticalAlignment este setată la valoarea Middle (valoarea implicită)

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

Descrierea proprietă ii Numele proprietă ii Pozi ia şi dimensiunea obiectului grafic text (dreptunghiului care încadrează textul). Alinierea pe orizontală o şirului de caractere care formează textul Pozi ia dreptunghiului definit prin proprietatea Extent Orientarea obiectului text Unită ile de măsură pentru proprietă ile Extent şi Position

Valoarea proprietă ii

Extent HorizontalAlignment Position

Valori: vector cu 4 elemente [left, bottom, width, height] Proprietate accesibilă doar pentru citire. Valori: left, center, right Implicit: left Valori: vector coordonate [x, y, z] exprimat în unită ile de măsură specificate prin proprietatea Units Valori: scalar (grade) Implicit: 0 Valori: pixels, normalized, inches, centimeters, points, data Implicit: data (unitatea de măsură
folosită pentru datele reprezentate în sistemul de axe părinte)

Rotation Units

VerticalAlignment FontAngle FonfName

Alinierea pe verticală o şirului de caractere care formează textul Înclinarea caracterelor Familia de fonturi

Valori: top, cap, middle, baseline, bottom Implicit: middle Valori: normal, italic, oblique Implicit: normal Valori: un şir de caractere semnificând un font acceptat de sistem sau şirul de caractere FixedWidth Implicit: Helvetica Valori: dimensiune exprimtată în măsură exprimată prin proprietatea Implicit: 10 points unitatea de FontUnits

FontSize

Dimensiunea fontului

FontUnits

Unitatea de măsură pentru proprietatea FontSize Grosimea caracterelor Culoarea textului

Valori: points, normalized, inches, centimeters, pixels Implicit: points Valori: light, normal, demi, bold Implicit: normal Valori: vector [R G B] sau nume predefinit Implicit: white

FontWeight Color

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: 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])

în

xlabel('text') ylabel('text') care text este şirul de caractere

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)

2)

title('text') în care 'text' este şirul de caractere ce va fi afişat. 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 TEX \alpha \beta \gamma \delta \epsilon Simbolul Secven a de caractere TEX \upsilon \phi \chi \psi \omega Simbolul Secven a de caractere TEX \sim \leq \infty \clubsuit \diamondsuit Simbolul ~

19

\zeta \eta \theta \vartheta \iota \kappa \lambda \mu \nu \xi \pi \rho \sigma \varsigma \tau \equiv \Im \otimes \cap \supset \int \rfloor \lfloor \perp \wedge \rceil \vee \langle µ

\Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Upsilon \Phi \Psi \Omega \forall \exists \ni \cong \approx \Re \oplus \cup \subseteq \in \lceil \cdot \neg \times \surd \varpi \rangle · ¬ x

\heartsuit \spadesuit \leftrightarrow \leftarrow \uparrow \rightarrow \downarrow \circ \pm \geq \propto \partial \bullet \div \neq \aleph \wp \oslash \supseteq \subset \o \nabla \ldots \prime \0 \mid \copyright | © ... ' • ÷ º ±

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
3) 'text1',' text2', ... 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
4) legend(matrice_caractere(1,:), matrice_caractere(2,:),...). legend(h, matrice_caractere) asociază fiecare linie a matricei matrice_caractere cu obiectul grafic corespunzător

din

vectorul h al identificatorilor.
5) 6) legend(h_axe,...)

afişează legenda pentru sistemul de axe identificat prin h_axe
legend('off'), legend(h_axe,'off')

şterg legenda din sistemul de axe curent, respectiv din sistemul de axe specificat prin
7) h_axe 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

• 9)

pos = 4 plasează legenda în col ul din dreapta jos al sistemului de axe. [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

5

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    4 12   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

5

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 5 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 5 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 bar(..., stil)

(un caracter sau un şir de caractere) permite specificarea culorii de reprezentare a barelor, la fel ca la func ia plot. • 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 y1

600 y2

40

400

20

200

0

0

2

4 x

6

8

10

0

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

5

0

1

1.5

2

2.5

3

3.5

4

– 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 •
stem(x,y) » 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 8 6 4 2 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 8 6 4 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 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))

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”)

î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

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.