17. REPREZENTÄ‚RI GRAFICE ÃŽN DOUÄ‚ DIMENSIUNI
17. REPREZENTÄ‚RI GRAFICE ÃŽN DOUÄ‚ DIMENSIUNI
17. REPREZENTÄ‚RI GRAFICE ÃŽN DOUÄ‚ DIMENSIUNI
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