17.11.2012 Views

17. REPREZENTÄ‚RI GRAFICE ÃŽN DOUÄ‚ DIMENSIUNI

17. REPREZENTÄ‚RI GRAFICE ÃŽN DOUÄ‚ DIMENSIUNI

17. REPREZENTÄ‚RI GRAFICE ÃŽN DOUÄ‚ DIMENSIUNI

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>17.</strong> REPREZENTĂRI <strong>GRAFICE</strong> ÎN DOUĂ<br />

<strong>DIMENSIUNI</strong><br />

<strong>17.</strong>1. Grafice de bază X-Y (2D)<br />

Pentru reprezentarea datelor în coordonate lineare se utilizează funcţia plot,<br />

care se poate apela prin:<br />

• plot(x,y) – care reprezintă grafic vectorul y funcţie de vectorul x, cu<br />

următoarele precizări:<br />

� dacă x este un scalar şi y un vector, de lungime n=length(y),<br />

se trasează un număr n de puncte discontinui pe axa y, în<br />

dreptul valorii x, ca în figura <strong>17.</strong>1, trasată pentru x=1 şi<br />

y=1:10, cu plot(x,y);<br />

� dacă x este un vector şi y un alt vector, atunci lungimea celor<br />

doi vectori trebuie să fie aceeaşi, n=length(x)=length(y) şi se<br />

trasează graficul variaţiei continue a lui y funcţie de x, ca în<br />

figura <strong>17.</strong>2, trasată pentru x=1:10 şi y=x.^1.25, cu plot(x,y);<br />

� dacă x este un vector şi y o matrice, atunci nl=length(x) trebuie<br />

să fie egal cu m din [n,m]=size(y), şi se trasează graficul variaţiei<br />

continue a fiecărei coloane a lui y funcţie de x, ca în figura <strong>17.</strong>3,<br />

trasată pentru x=1:10 şi y=[x; x.^1.25], cu plot(x,y);<br />

� dacă x şi y sunt matrice, de aceeaşi dimensiune<br />

(size(x)=size(y)), se reprezintă coloanele lui y funcţie de<br />

coloanele lui x, ca în figura <strong>17.</strong>4, trasată pentru<br />

x=[ 1 1 ; 2 2; 3 3; 4 4; 5 5] şi<br />

y=[1.000 7.4767; 2.3784 5.6569; 3.9482 3.9482; 5.6569<br />

2.3784; 7.4767 1.0000] , cu plot(x,y);<br />

• plot(y) – care reprezintă grafic argumentul y funcţie de indici cu<br />

următoarele precizări:<br />

� dacă argumentul y este complex, atunci plot(y) este echivalent<br />

cu plot(real(y),imag(y)), ca de exemplu pentru y= [1+i<br />

2+1.4142i 3+1.7321i 4+2i 5+2.2361i 6+2.4495i 7+2.6458i<br />

8+2.8284i 9+3i 10+3.1623i]; rezultă figura <strong>17.</strong>5;<br />

� dacă y este vector (linie sau coloană), funcţia plot trasează<br />

graficul y=y(i), unde i=1, 2, …, n este numărul de ordine al<br />

elementului y;<br />

� dacă y este o matrice de m x n, funcţia plot trasează graficele<br />

yj=yj(i), unde i=1, 2, …, n este numărul de ordine al<br />

elementului yj de pe coloana j, cu j=1, 2, …, m;


360<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

• plot(x1,y1,x2,y2, …, xn,yn) – reprezintă grafic simultan mai multe grafice<br />

în acelaşi sistem de coordonate, respectiv y1=f(x1), y2=f(x2), …yn=f(xn);<br />

• plot(x,y,’linie-tip’) – apare specificat tipul de linie şi culoare utilizată,<br />

după cum se specifică în tabelul <strong>17.</strong>1.<br />

Fig. <strong>17.</strong>1. Graficul y vector şi x scalar<br />

Deci, graficele se pot reprezenta utilizând linii, markere şi culori după codul<br />

din tabelul <strong>17.</strong>1.<br />

Tipuri de linii, markere şi culori utilizate la trasarea graficelor<br />

Tabelul <strong>17.</strong>1<br />

Culori Markere tip Linii tip<br />

y galben . punct - continuă<br />

m mov o cerc : punctată<br />

c albastru deschis x x -. prin puncte<br />

r roşu + plus (+) -- întreruptă<br />

g verde * *<br />

b albastru s pătrat<br />

w alb d romb<br />

k negru v triunghi cu vărful în jos<br />

^ triunghi cu vărful în sus<br />

< triunghi cu vărful la stânga<br />

> triunghi cu vărful la dreapta<br />

p stea cu 5 colţuri<br />

h stea cu 6 colţuri


Reprezentări grafice în doua dimensiuni 361<br />

Pentru reprezentările grafice, se asociază fiecărei caracteristici un şir de 1÷3<br />

caractere, dintre cele menţionate mai sus.<br />

Fig. <strong>17.</strong>2. Variaţia lui y vector funcţie de x vector<br />

Fig. <strong>17.</strong>3. Variaţia lui y matrice funcţie de x vector<br />

Aceste şiruri de caractere trebuie cuprinse între apostrofuri şi menţionate în<br />

combinaţia culoare-marker sau culoare-linie-tip. Dacă se precizează o singură<br />

caracteristică (marker, linie sau culoare), cea de-a doua este selectată automat de<br />

calculator.<br />

Dacă nu se specifică culoarea, Matlab-ul foloseşte implicit galben. Pentru


362<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

grafice multiple se utilizează succesiv primele şase culori din tabel.<br />

Fig. <strong>17.</strong>4. Variaţia lui y matrice funcţie de x matrice<br />

Fig. <strong>17.</strong>5. Reprezentarea grafică a numărului complex y<br />

Funcţia plot returnează un vector coloană al identificatorilor de control al<br />

caracteristicilor obiectelor linie. Obiectele linie create cu plot sunt copii ai axelor<br />

curente.<br />

Perechile (x,y) pot fi urmate de perechile parametru/valoare, pentru a<br />

specifica proprietăţile suplimentare ale liniilor.


Reprezentări grafice în doua dimensiuni 363<br />

Pentru reprezentările grafice în coordonate logaritmice sau<br />

semilogaritmice se utilizează funcţiile loglog, semilogx, semilogy, care se<br />

apelează astfel:<br />

• loglog(x,y) – reprezintă grafic pe log(y) funcţie de log(x), adică scalează<br />

ambele axe, utilizând logaritmul în baza 10;<br />

• semilogx(x,y) – reprezintă grafic pe y funcţie de log(x), adică scalează<br />

numai axa x , utilizând logaritmul în baza 10;<br />

• semilogy(x,y) – reprezintă grafic pe log(y) funcţie de x, adică scalează<br />

numai axa y, utilizând logaritmul în baza 10.<br />

Modul de utilizare al acestor funcţii este la fel ca acela al funcţiei plot. De<br />

exemplu, dacă se doreşte reprezentarea în coordonate semilogaritmice, pe axa y, a<br />

funcţiei y=10 x , unde x=0:10, atunci programul Matlab este:<br />

x=0:10;y=10.^x;semilogy(x,y,'


364<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

şi se obţine reprezentarea din figura <strong>17.</strong>7.<br />

Fig. <strong>17.</strong>7. Reprezentarea în coordonate polare<br />

Trasarea pe acelaşi grafic a lui y1 funcţie de x1 cu axa y1 la stânga şi a lui y2<br />

funcţie de x2 cu axa y2 la dreapta se face cu plotyy(x1,y1,x2,y2), iar reprezentarea<br />

grafică este în figura <strong>17.</strong>8.<br />

Pentru trasare s-a considerat x1=0:0.1:10;y1=x1.^2; x2=0:0.1:10;y2=x2.^0.2.<br />

Fig. <strong>17.</strong>8. Reprezentarea cu funcţia plotyy


Reprezentări grafice în doua dimensiuni 365<br />

Funcţia plotyy(x1,y1,x2,y2,'fun') utilizează funcţia fun pentru plotare, care<br />

poate fi o funcţie internă pentru plotare precum: plot, semilogx, semilogy, loglog,<br />

stem, care acceptă sintaxa H=fun(x,y).<br />

Dacă se doreşte utilizarea pentru axele din stânga şi dreapta a două moduri<br />

diferite, se utilizează funcţia plotyy(x1,y1,x2,y2,'fun1', 'fun2'), unde pentru<br />

perechea (x1,y1) se utilizează fun1(x1,y1), iar pentru perechea (x2,y2) se utilizează<br />

fun2(x2,y2).<br />

Funcţia [ax,h1,h2]=plotyy(x1,y1,x2,y2,'fun1', 'fun2'), permite returnarea<br />

locului unde sunt create axele în ax(1), pentru axa din stânga, în ax(2), pentru axa<br />

din dreapta şi a obiectelor grafice în h1 şi h2.<br />

De exemplu, pentru<br />

x1=0:0.1:10; y1=x1.^2; x2=0:0.1:10; y2=x2.^0.2;<br />

comanda,<br />

[ax,h1,h2]=plotyy(x1,y1,x2,y2,'semilogy','stem'),<br />

returnează,<br />

ax =<br />

100.0056 101.0193<br />

h1 =<br />

3.0334<br />

h2 =<br />

102.0118<br />

103.0167<br />

iar graficul este redat în figura <strong>17.</strong>9.<br />

Fig. <strong>17.</strong>9. Reprezentarea cu funcţia plotyy(x1,y1,x2,y2,'semilogy','stem')


366<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

<strong>17.</strong>2. Adnotări pe grafice<br />

Pentru adnotarea şi editarea graficelor se poate utiliza pachetul Plotedit.<br />

Pentru a se intra în modul de editare se tastează comanda plotedit on, sau simplu<br />

plotedit, ceea ce deschide fereastra de plotare cu meniul corespunzător, care<br />

permite să se insereze etichete pentru axe, titlul graficului, legenda, bara de<br />

culoare, linii, text, axe şi să se regleze luminozitatea. Orice deschidere a unei figuri<br />

Matlab, având extensia fig, permite editarea acesteia.<br />

Ieşirea din modul de editare se face prin comanda plotedit off.<br />

Adăugarea unei legende la un grafic se face prin comanda legend. Cea mai<br />

comodă şi comună apelare este dată în exemplul de mai jos,<br />

x = 0:.2:12;<br />

plot(x,bessel(1,x),x,bessel(2,x),x,bessel(3,x));<br />

legend('First','Second','Third',0);<br />

reprezentat în figura <strong>17.</strong>10.<br />

0.6<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

First<br />

Second<br />

Third<br />

-0.4<br />

0 2 4 6 8 10 12<br />

Fig.<strong>17.</strong>10. Plasarea legendei pe grafic<br />

De menţionat că „0” semnifică faptul că se alege cel mai bun plasament al<br />

legendei pe grafic, care să nu intre în contradicţie cu datele. În locul valorii „0” se<br />

mai pot utiliza: 1 sau lipsă, ceea ce poziţionează legenda în partea dreaptă<br />

superioară în interior; 2, ce poziţionează legenda în partea stângă superioară în<br />

interior; 3, care plasează legenda în partea de jos stânga şi în interior; 4, ce plasează<br />

legenda în partea inferioară stânga şi în interior; -1, care plasează legenda în partea<br />

dreaptă sus şi în exterior.<br />

De menţionat că legenda se poate muta pe grafic în poziţia dorită prin apăsare


Reprezentări grafice în doua dimensiuni 367<br />

mouse stânga şi apoi mutarea în poziţia dorită.<br />

Scanarea graficului, pentru poziţionarea legendei, se execută cu funcţia<br />

lscan, care găseşte cel mai bun plasament al legendei, care să nu se suprapună<br />

peste grafic şi să fie vizibilă.<br />

Mutarea legendei se face automat, cu funcţia moveaxis, apelată de legend şi<br />

instalată automat în ButtonDownFcn.<br />

Pentru precizarea titlului graficului curent se utilizeză funcţia title, care se<br />

apelează cu sintaxa:<br />

title('Titlul dorit')<br />

unde 'Titlul dorit' este un şir de caractere care reprezintă titlul graficului.<br />

Precizarea numelui mărimilor reprezentate pe fiecare axă, precum şi a<br />

unităţilor de măsură folosite, se execută cu funcţia xlabel, pentru axa x, ylabel,<br />

pentru axa y şi zlabel, pentru axa z. Acestea se apelează cu sintaxele:<br />

xlabel('text dorit') ylabel('text dorit') zlabel('text dorit'),<br />

unde 'text dorit' este un şir de caractere, care reprezintă, în general, numele axei,<br />

unitatea de măsură sau alte elemente utile ale axei graficului curent. Repetarea<br />

instrucţiunii, cu un alt şir de caractere, conduce la înlocuirea textului anterior, fără<br />

a fi necesară refacerea reprezentării grafice.<br />

Plasarea unui şir de caractere, de exemplu, textul, în câmpul grafic, la<br />

coordonatele (x, y) sau (x, y, z), se realizează cu funcţia text, apelată cu sintaxa:<br />

text(x,y,'textul') sau text(x,y,z,'textul').<br />

Coordonatele grafice sunt date în unităţi de măsură ale ultimului grafic.<br />

Dacă coordonatele sunt vectori (X şi Y), funcţia text scrie şirul de caractere<br />

„textul”, la toate poziţiile date de perechile (X,Y). Dacă „textul” este un şir de<br />

caractere de aceeaşi lungime cu vectorii X şi Y, funcţia marchează fiecare punct cu<br />

linia, markerul sau caracterul corespunzător din şirul „textul”.<br />

Apelată cu sintaxa text(X,Y,'textul','sc'), funcţia interpolează puntele (X,Y) în<br />

coordonatele ecranului, respectiv între (0,0), colţul din stânga jos şi (1,1) ,colţul din<br />

dreapta sus al ecranului.<br />

Plasarea unui şir de caractere (text sau comentariu) în cânpul grafic cu<br />

mouse-ul se realizează[ utilizând funcţia gtext, apelată cu sintaxa:<br />

gtext('textul').<br />

Funcţia gtext afişează şirul de caractere 'textul' în fereastra grafică şi aşteaptă<br />

deplasarea acestuia pe grafic cu mouse-ul. Apăsând un buton al mouse-ului sau<br />

orice tastă, textul se scrie pe grafic la poziţia selectată.<br />

Pentru a transforma un şir de caractere într-o expresie TeX, se utilizează<br />

funcţia texlabel, putând fi apelată cu sintaxa texlabel('expresie') pentru a<br />

transforma expresia 'expresie' în echivalent TeX pentru aplicaţii Matlab, sau<br />

texlabel('expresie','literal') pentru a transforma expresia 'expresie' în formă literală.<br />

De exemplu, comanda:<br />

texlabel('sin(sqrt(x^2 + y^2))/sqrt(x^2 + y^2)')


368<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

returnează,<br />

{sin}({sqrt}({x}^{2} + {y}^{2}))/{sqrt}({x}^{2} + {y}^{2})<br />

comanda,<br />

texlabel('lambda12^(3/2)/pi - pi*delta^(2/3)','literal')<br />

returnează,<br />

{lambda12}^{{3}/{2}}/{pi} - {pi} {delta}^{{2}/{3}}<br />

<strong>17.</strong>3. Funcţii utilitare pentru scriere<br />

Pentru utilizator sunt posibile următoarele utilitare:<br />

• doclick – manipularea obiectelor de proces cu ButtonDown;<br />

• dokeypress – funcţii pentru manipularea cheilor;<br />

• domymenu – manipularea conţinutului meniului;<br />

• doresize – cheamă funcţia pentru figurile obiect;<br />

• getobj – recheamă pentru manipulare obiectul scris;<br />

• enddrag, middrag, prepdrag, putdowntext, scribeclearmode,<br />

scribeeventhandler, scriberestoresavefcns – funcţii help pentru editorul<br />

de plotare;<br />

• scribeaxesdlg – funcţia de help dialog a proprietăţilor axelor;<br />

• scribelinedlg - funcţia de help dialog a proprietăţilor liniei;<br />

• scribetextdlg – editarea proprietăţilor text şi font în editorul de plotare.<br />

<strong>17.</strong>4. Grafice 2D specializate<br />

Reprezentarea grafică, sub formă de bare verticale, se realizează cu funcţia<br />

bar, care se poate apela cu sintaxa:<br />

• bar(x,y,gros) – reprezintă grafic y, în funcţie de x, cu grosimea barei date<br />

de gros, care poate lipsi şi atunci, valoarea implicită este gros=0.8; dacă<br />

gros1 atunci barele se unesc,<br />

ca în figura <strong>17.</strong>11 şi figura <strong>17.</strong>12 mijloc;<br />

• bar(x,y, 'grouped') – reprezintă barele grupate pe seturi de date şi cu<br />

aceeaşi culoare, ca în figura <strong>17.</strong>12 superior;<br />

• bar(x,y, 'stacked') – reprezintă barele secţionate cu culori diferite pentru<br />

seturile de date, ca în figura <strong>17.</strong>12 inferior.<br />

De menţionat că valorile lui x trebuie să fie egal depărtate şi crescătoare.<br />

Figura <strong>17.</strong>12 a fost realizată cu secvenţa:<br />

subplot(3,1,1), bar(rand(10,5),'stacked'), colormap(cool);<br />

subplot(3,1,2), bar(0:.25:1,rand(5),1);


Reprezentări grafice în doua dimensiuni 369<br />

subplot(3,1,3), bar(rand(2,3),.75,'grouped').<br />

Fig.<strong>17.</strong>11. Reprezentarea bar cu grosimi diferite<br />

Fig.<strong>17.</strong>12. Reprezentarea bar grupat şi secţionat<br />

Apelată cu secvenţa,<br />

[xb,yb]=bar(y) sau [xb,yb]=bar(x,y)


370<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

funcţia bar nu reprezintă graficele, dar calculează vectorii xb şi yb, astfel încât<br />

plot(xb,yb) să poată trasa graficul de bare. Aceasta este utilă când se doreşte un<br />

control mai mare asupra graficului.<br />

Reprezentarea barelor orizontale se realizează cu funcţia barh, care este<br />

asemănătoare funcţiei bar. Pentru exemplificare, se consideră secvenţa anterioară<br />

în care se înlocuieşte bar cu barh, reprezentată în fiura.<strong>17.</strong>13:<br />

subplot(3,1,1), barh(rand(10,5),'stacked'), colormap(cool);<br />

subplot(3,1,2), barh(0:.25:1,rand(5),1);<br />

subplot(3,1,3), barh(rand(2,3),.75,'grouped').<br />

Fig.<strong>17.</strong>13. Representarea barh grupat şi secţionat<br />

Pentru plotarea ariei de sub curbă se poate utiliza funcţia area, care se<br />

apelează cu secvenţa area(x,y) şi este asemănătoare cu plot(x,y), cu deosebirea că<br />

aria de sub curbă este colorată, între 0 şi y.<br />

Apelată cu area(y) consideră implicit că x=1:size(y,1).<br />

Specificarea nivelului de la care se colorează aria se face prin level, care<br />

poate fi 0 (valoare implicită) sau o valoare precizată, caz în care colorarea se face<br />

între level şi valoarea curentă a lui y, ca în figura <strong>17.</strong>14, realizată cu secvenţa:<br />

x=1:10;y=x.^2;area(x,y,50).<br />

Pentru reprezentarea dinamică (în mişcare) a traiectoriei unui punct, care<br />

urmăreşte reprezentarea grafică 2D (o „cometă”), se utilizează funcţia comet, care


Reprezentări grafice în doua dimensiuni 371<br />

se apelează cu una dintre sintaxele:<br />

• comet(y) – care trasează în mişcare (animat) vectorul y;<br />

• comet(x,y) – care trasează în mişcare vectorul y funcţie de x;<br />

• comet(x,y,p) – care trasează în mişcare vectorul y funcţie de x, utilizând<br />

pentru animare (întârzierea în plotare) timpul dat de p*length(y).<br />

Pentru exemplificare se recomandă secvenţa:<br />

t = -pi:pi/200:pi;<br />

comet(t,tan(sin(t))-sin(tan(t))).<br />

Fig.<strong>17.</strong>14. Reprezentarea funcţiei area cu level<br />

Evidenţierea erorilor datelor reprezentate grafic se poate face cu funcţia<br />

errorbar, apelată cu sintaxa: errorbar(x,y,e).<br />

Reprezentarea grafică a datelor cu bare de eroare ataşează fiecărei perechi<br />

(x,y) eroarea precizată într-un vector, e, cu aceleaşi dimensiuni. Vectorul e conţine<br />

lungimea barelor ce reprezintă eroarea.<br />

Barele de erori se reprezintă simetric în raport cu ordonata y, ceea ce<br />

presupune o asociere de erori pozitive sau negative, cu aceeaşi probabilitate.<br />

Segmentele de eroare sunt de înălţime 2*e şi se trasează pe curba y=y(x). Figura<br />

obţinută reprezintă plaja de valori pe care o poate lua funcţia y cu eroarea ”e”.<br />

Dacă x şi y sunt matrice de aceeaşi dimensiune, funcţia errorbar va<br />

reprezenta graficul cu bare de eroare, pentru fiecare coloană în parte.<br />

Un exemplu de reprezentare grafică a funcţiei errorbar este prezentat în<br />

figura <strong>17.</strong>15, realizată cu secvenţa:<br />

x = 1:10; y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e).


372<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Fig.<strong>17.</strong>15. Reprezentare grafică cu funcţia errorbar<br />

Pentru plotarea facilă a unei expresii introduse direct ca argument (de genul<br />

funcţiei humps) se face uşor cu funcţia ezplot, care se poate apela:<br />

• ezplot(f), ca de exemplu ezplot('cos(x)'), care consideră implicit pentru x<br />

din f=f(x), domeniul 2*pi < x < 2*pi;<br />

• ezplot(f, [xmin,xmax,ymin,ymax]), care plotează f(x,y)=0 pe domeniul<br />

xmin < x < xmax, ymin < y < ymax;<br />

• ezplot(f), ca de exemplu ezplot('x^2 - y^2 - 1'), care plotează f(x,y)=0 şi în<br />

care -2*pi < x < 2*pi şi -2*pi < y < 2*pi, reprezentată în figura <strong>17.</strong>16;<br />

• ezplot('f',[a b]), ca de exemplu ezplot('x^3 + y^3 - 5*x*y + 1/5',[-3,3]),<br />

care plotează f(x,y)=0 şi în care a=-3 < x < b=3 şi a=-3 < y < b=3;<br />

De menţionat că, funcţia f poate fi definită şi anterior prin secvenţa:<br />

f = inline('cos(x)+2*sin(x)'),<br />

caz în care funcţia ezplot se poate apela cu una dintre secvenţele,<br />

ezplot(f);<br />

ezplot(@humps).<br />

Plotarea facilă în coordonate polare a unei funcţii introduse ca argument,<br />

respectiv a curbei rho = f(theta), pe domeniul implicit 0 < theta < 2*pi, se face prin<br />

apelarea funcţiei ezplot, sub forma:<br />

ezplot(f)<br />

sau,<br />

ezplot(f,[a,b] în care a < theta < b.


Reprezentări grafice în doua dimensiuni 373<br />

Fig.<strong>17.</strong>16. Reprezentarea grafică cu ezplot<br />

Funcţia f poate fi definită ca o expresie utilizând @ (funcţie humps) sau ca o<br />

funcţie inline, ca de exemplu:<br />

ezpolar('1 + cos(t)')<br />

ezpolar('cos(2*t)')<br />

ezpolar('sin(tan(t))')<br />

ezpolar('sin(3*t)')<br />

ezpolar('cos(5*t)')<br />

ezpolar('sin(2*t)*cos(3*t)',[0,pi])<br />

ezpolar('1 + 2*sin(t/2)')<br />

ezpolar('1 - 2*sin(3*t)')<br />

ezpolar('sin(t)/t', [-6*pi,6*pi])<br />

r = '100/(100+(t-1/2*pi)^8)*(2-sin(7*t)-1/2*cos(30*t))';<br />

ezpolar(r,[-pi/2,3*pi/2])<br />

h = inline('log(gamma(x+1))');<br />

ezpolar(h)<br />

ezpolar(@cot,[0,pi])<br />

Reprezentarea grafică a funcţiei ezpolar('1 - 2*sin(3*t)'), este prezentată în<br />

figura <strong>17.</strong><strong>17.</strong><br />

Reprezentarea grafică a unor vectori cu originea în originea sistemului de<br />

coordonate polare se face cu funcţia compass, care se apelează cu una din<br />

sintaxele:<br />

compass(z), compass(real(z),imag(z)), sau compass(x,y),


374<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

unde z este numărul complex z=x+i*y, iar x şi y sunt numere reale care sunt<br />

proiecţia vectorului z pe abscisă şi ordonată.<br />

Fig.<strong>17.</strong><strong>17.</strong> Reprezentarea grafică cu ezpolar<br />

Dacă z=[3-4*i -3+2*i 5+7*i], atunci cu compass(z) se obţine reprezentarea<br />

din figura <strong>17.</strong>18, iar pentru x=[1 2 4]; y=[-4 5 -2], funcţia compass(x,y) este redată<br />

în figura <strong>17.</strong>19.<br />

Fig.<strong>17.</strong>18. Reprezentarea grafică cu compass a lui z - complex


Reprezentări grafice în doua dimensiuni 375<br />

Fig.<strong>17.</strong>19. Reprezentarea grafică cu compass a vectorilor x, y<br />

Pentru reprezentarea grafică în coordonate 2D rectangulare a vectorilor se<br />

utilizează funcţia feather, care se apelează ca şi funcţia compass, respectiv:<br />

feather(z) sau feather(x,y).<br />

Reprezentarea aceloraşi vectori z şi x, y cu funcţia feather este redată în<br />

figura <strong>17.</strong>20 şi respectiv figura <strong>17.</strong>21.<br />

Fig.<strong>17.</strong>20. Reprezentarea grafică cu feather a lui z – complex


376<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Fig.<strong>17.</strong>21. Reprezentarea grafică cu feather a vectorilor x, y<br />

Fig.<strong>17.</strong>22. Reprezentarea poligoanelor cu funcţia plot<br />

Fig.<strong>17.</strong>23. Reprezentarea poligoanelor cu funcţia fill


Reprezentări grafice în doua dimensiuni 377<br />

Pentru reprezentarea grafică a poligoanelor se utilizează funcţia fill, care se<br />

apelează cu sintaxa generală fill(x,y,c), care reprezintă un poligon definit de<br />

vectorii x şi y, cu nuanţele de culoare c. Coordonatele vârfurilor poligonului sunt<br />

specificate prin perechile (x,y). Dacă se consideră necesar, poligonul se poate<br />

închide, conectând valorile finale la cele iniţiale.<br />

Dacă argumentul c este un singur caracter dintre cele prezentate în lista de<br />

culori din tabelul <strong>17.</strong>1 sau un vector cu trei componente [r g b], poligonul va fi<br />

colorat într-o singură culoare. În cazul în care c este un vector cu aceeaşi<br />

dimensiune ca x şi y, elementele acestuia sunt scalate cu funcţia caxis şi apoi<br />

utilizate ca indici într-o matrice care specifică culorile vârfurilor. Culorile dintre<br />

vârfuri sunt obţinute prin interpolare biliniară a culorilor vârfurilor.<br />

Dacă x şi y sunt matrice cu aceeaşi dimensiune, fill(x,y,c) reprezintă câte un<br />

poligon pentru fiecare coloană. În acest caz, c este un vector linie pentru poligoane<br />

cu o singură culoare şi, respectiv, o matrice pentru poligoane cu culori interpolate.<br />

Dacă numai unul dintre argumentele x sau y este matrice, celălalt fiind vector<br />

coloană cu acelaşi număr de linii, vectorul coloană se va extinde la o matrice cu<br />

aceleaşi dimensiuni, prin adăugarea unor coloane identice.<br />

Pentru specificarea poligoanelor multiple, se poate utiliza şi forma<br />

fill(x1,y1,c1,x2,y2,c2,…), care este mult mai uşor de controlat.<br />

Funcţia fill setează proprietăţile FaceColor a funcţiei patch (care creează<br />

module obiect) la „flat” (aceeaşi culoare), „interp” (culori interpolate) sau<br />

ColorSpec (culoarea specificată), funcţie de valorile matricei c.<br />

Funcţia fill returnează un vector coloană al identificatorilor de control al<br />

caracteristicilor modulelor obiect, câte o linie pentru fiecare modul. Argumentele<br />

x,y,c pot fi urmate de perechi parametru-valoare, pentru a specifica proprietăţile<br />

suplimentare ale modulului obiect.<br />

Pentru a evidenţia diferenţa dintre plot şi fill se consideră poligoanele:<br />

x1=[0 2 3 -1 0];y1=[-1 0 3 2 -1]; x2=[2 3 5 4 2]; y2=[0 3 2 0 0];<br />

care, reprezentate cu plot, sunt prezentate în figura <strong>17.</strong>22, iar reprezentate cu fill<br />

sunt redate în figura <strong>17.</strong>23, din care reiese că funcţia fill umple poligoanele cu<br />

culoarea specificată.<br />

Reprezentarea grafică cu parametrii impuşi se realizează cu funcţia fplot.<br />

Funcţia fplot realizează o reprezentare grafică cu anumite restricţii şi se apelează<br />

cu una dintre sintaxele:<br />

fplot('fun', limite) fplot('fun', limite, tol)<br />

fplot('fun', limite, n) fplot('fun', limite, n, unghi)<br />

fplot('fun', limite, n, unghi,subdiviz) [x,y]=fplot('fun', limite, …)<br />

unde:<br />

fun - numele fişierului funcţie (şir de caractere), care poate fi dată sub forma<br />

unei funcţii linie obiect, cu @ sau expresie;<br />

limite = [xmin xmax] – limitele axei x pentru care se doreşte reprezentarea<br />

grafică;<br />

tol – eroarea tolerată la reprezentare, care, dacă lipseşte, are valoarea


378<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

implicită 2e-3, respectiv de 0.2 procente;<br />

n – numărul de eşantioane cu care este reprezentată funcţia<br />

(implicit n=25);<br />

unghi – cea mai mare schimbare de unghi dintre două segmente<br />

adiacente ale graficului (implicit 10°);<br />

x, y - vectori coloană în care sunt returnate valorile abscisei şi ale<br />

ordonatei funcţiei.<br />

Dacă funcţia fplot se apelează cu argumente de ieşire, nu se reprezintă nici<br />

un grafic, dar acesta se poate trasa ulterior apelând funcţia plot(x,y).<br />

Un exemplu de utilizare este:<br />

subplot(2,2,1), fplot(@humps,[0 1])<br />

f = inline('abs(exp(-j*x*(0:9))*ones(10,1))');<br />

subplot(2,2,2), fplot(f,[0 2*pi])<br />

subplot(2,2,3), fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])<br />

subplot(2,2,4), fplot('sin(1 ./ x)', [0.01 0.1],1e-3)<br />

prezentat în figura <strong>17.</strong>24.<br />

Fig.<strong>17.</strong>24. Reprezentări cu funcţia fplot<br />

Calculul şi reprezentarea grafică a histogramelor se face cu funcţia hist,<br />

care se apelează cu una dintre sintaxele:<br />

• hist(y) – trasează histograma cu 10 segmente egale a datelor vectorului y;<br />

• hist(y, n) – trasează histograma cu n segmente egale a datelor vectorului y;<br />

• hist(y, x) – trasează histograma datelor vectorului y la abscisele specificate


Reprezentări grafice în doua dimensiuni 379<br />

în x;<br />

• [m,z]=hist(y), [m,z]=hist(y, n), [m,z]=hist(y, x) – returnează vectorii m şi<br />

z conţinând frecvenţa de apariţie şi de localizare a segmentelor, apoi cu<br />

funcţia bar(z,m) se poate trasa histograma, dând o mai mare flexibilitate<br />

reprezentărilor grafice şi realizând grafice mai sugestive.<br />

Un exemplu de histogramă este cel din figura <strong>17.</strong>25, care reprezintă un vector<br />

cu elementele distribuite normal (Gaussian), obţinut cu secvenţa:<br />

x=-4:0.4:4; y=randn(10000,1); hist(y,x).<br />

Fig.<strong>17.</strong>25. Reprezentarea grafică a unei histograme<br />

Reprezentarea unei histograme în coordonate polare se face cu funcţia rose,<br />

care se apelează:<br />

• rose(x) – unde x trebuie să fie cuprins în intervalul [0, 2π];<br />

• rose(x,N) – în care n, este numărul de subintervale în care se împarte<br />

intervalul [0, 2π], cu valoarea implicită N=20;<br />

• [t,r] =rose(x,N) – care returnează vectorii t şi r, ce pot fi folosiţi pentru<br />

reprezentarea unei histograme polare, cu funcţia polar(t,r).<br />

Pentru exemplificare, se prezintă în figura <strong>17.</strong>26 histograma a 200 numere<br />

aleatoare, în coordonate polare, obţinută din:<br />

x=2*pi*rand(200,1); rose(x,10).<br />

De menţionat că în ultimele revizii ale Matlab s-a renuntat la funcţia rose ca<br />

şi la funcţia compass, acestea fiind înlocuite.


380<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Fig.<strong>17.</strong>26. Reprezentarea grafică a unei histograme polare<br />

Reprezentarea grafică a semnalelor discrete, sub forma unor linii terminate<br />

cu cerc, se face cu funcţia stem, care se apelează cu una dintre sintaxele:<br />

• stem(y) – trasează un grafic din linii cu cerc, cu elementele vectorului y;<br />

• stem(x,y) – trasează un grafic din linii terminate cu cerc, cu locaţiile<br />

specificate de vectorul x, adică y=y(x), iar valorile lui x trebuie să fie egal<br />

depărtate şi crescătoare;<br />

• stem(x,y,linie_tip) – trasează un grafic linii de tipul şi culoarea precizată în<br />

şirul de caractere linie_tip, similar cu funcţia plot (de exemplu<br />

stem(x,y,’:r’).<br />

Un exemplu de reprezentare grafică cu funcţia stem este redat în figura<br />

<strong>17.</strong>27, pentru funcţia discretă sinus, obţinut cu secvenţa Matlab:<br />

n=0:30; f=sin(2*pi*n/10); stim(n,f).<br />

Fig.<strong>17.</strong>27. Reprezentarea grafică cu funcţia stem


Reprezentări grafice în doua dimensiuni 381<br />

Reprezentarea grafică în trepte se realizează cu funcţia stairs. Graficele în<br />

trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de<br />

eşantionare şi prelucrare a datelor.<br />

Funcţia stairs se apelează cu una dintre sintaxele:<br />

• stairs(y) – trasează graficul în trepte al vectorului y;<br />

• stairs(x,y) – trasează graficul în trepte al elementelor vectorului y la<br />

locaţiile specificate în x, iar valorile lui x trebuie să fie egal departate şi în<br />

ordine crescătoare;<br />

• [xb,yb]=stairs(y) şi [xb,yb]=stairs(x,y) – calculează vectorii xb şi yb,<br />

astfel încât plot(xb,yb) să poată trasa graficul în trepte.<br />

Un exemplu de grafic în trepte al funcţiei y=sin(x), obţinut cu secvenţa:<br />

x=0:0.3:6; y=sin(x); stairs(x,y)<br />

este redat în figura <strong>17.</strong>28.<br />

Fig.<strong>17.</strong>28 Reprezentarea grafică cu funcţia stairs<br />

Realizarea unei diagrame sub formă de bare, punând în ordine<br />

descrescătoare vectorii y, se poate face apelând funcţia pareto(y) sau pareto(y,x),<br />

în care y sunt valorile corespunzătoare fiecarui x.<br />

Înălţimea barelor corespunde valorilor lui y, ordonata din stânga graficului<br />

are înălţimea cât sum(y), iar cea din dreapta dă valoarea procentuală y/sum(y),<br />

după cum se observă din figura <strong>17.</strong>29. Curba continuă trasează diferenţa, valoarea<br />

sumei şi valoarea fiecărei valori a lui y.<br />

Realizarea unei diagrame circulare (aşa numita diagramă „plăcintă”) cu<br />

valorile unui vector x, având specificată semnificaţia în etichetă, se face cu funcţia<br />

pie(x,eticheta), care se poate apela pie([2 4 3 5],{'North','South','East','West'}),<br />

dând diagrama din figura <strong>17.</strong>30.<br />

De menţionat că valorile lui x sunt normalizate, iar dacă sum(x)


382<br />

SISTEME DE PROGRAMARE PENTRU MODELARE ŞI SIMULARE<br />

Fig.<strong>17.</strong>29. Reprezentarea grafică cu funcţia pareto<br />

Fig.<strong>17.</strong>30. Reprezentarea grafică cu funcţia pie<br />

Plotarea unei matrice dispersate se face cu funcţia plotmatrix. Se apelează<br />

cu comanda plotmatrix(x,y) şi prezintă dispersia coloanei x funcţie de coloana y.<br />

Dacă x este o matrice p*m, iar y o matrice p*n, atunci plotmatrix produce o<br />

matrice n*m. Comanda plotmatrix(y) este asemănătoare cu comanda<br />

plotmatrix(y,y), cu excepţia faptului că diagonala este înlocuită prin hist(y(:,i)).<br />

Un exemplu de utilizare este redat in figura <strong>17.</strong>31, realizat cu comenzile:<br />

x = randn(50,3); y = x*[-1 2 1;2 0 1;1 -2 3;]';<br />

plotmatrix(y).<br />

Plotarea dispersiei vectorului x, funcţie de vectorul y (x şi y având aceeaşi<br />

dimensiune), cu markere (cerculeţe implicit) de arie determinată de valorile<br />

vectorului s (în puncte^2) şi fiecare punct colorat, conform valorilor vectorului c,<br />

se face cu scatter(x,y,s,c). Dacă s este scalar, atunci fiecare marker va avea aceeşi<br />

dimensiune.


Reprezentări grafice în doua dimensiuni 383<br />

Fig.<strong>17.</strong>31. Reprezentarea grafică cu funcţia plotmatrix<br />

Considerând valorile negative ale magnetismului z(m) la nivel planetar,<br />

funcţie de latitudinea x (grade) şi longitudinea y (grade), date de Parker, R. L.,<br />

Shure, L. & Hildebrand, J., "The application of inverse theory to seamount<br />

magnetism", Reviews of Geophysics vol 25, pp 17-40, 1987, diagrama de variaţie<br />

realizată cu:<br />

load seamount ;<br />

scatter(x,y,5,z)<br />

este prezentată în figura <strong>17.</strong>32.<br />

Fig.<strong>17.</strong>32. Reprezentarea grafică cu funcţia scatter

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!