Sunteți pe pagina 1din 26

GRAFICE 2D ȊN MATLAB

• Imaginile grafice pot fi generate atȃt din date calculate


ȋn MATLAB, cȃt și din surse externe de date. Toate imaginile
grafice pot fi salvate și imprimate color sau alb-negru.
• Graficele color se obțin pe baza sistemului RGB (Red-
Green-Blue=Roșu-Verde-Albastru). Toate punctele colorate
sunt construite din trei puncte: unul roșu, unul verde și unul
albastru, astfel ȋncȃt culoarea unui pixel este rezultatul unei
relații ȋntre intensitǎțile celor trei culori de bazǎ. Fiecare
culoare de bazǎ se poate ajusta pe o scarǎ de valori de la 0 la
255. Cele 256 niveluri de culoare pot fi descrise cu 8 biți de
date (numǎrul 28=256). Avem nevoie de 8 biți pentru
reprezentarea fiecǎrei nuanțe de bazǎ, deci un total de 24 biți
pentru culoarea unui pixel.
• Informații complete despre modul de realizare al
• Reprezentarea graficelor bidimensionale folosește culori, markere și linii
corespunzǎtor tabelului urmǎtor. Acestea reprezintǎ opțiunile de reprezentare
graficǎ folosind comanda „plot”.
Aceastǎ funcție are una din sintaxele:
• plot(X,Y) - reprezintǎ vectorul Y ȋn funcție de vectorul X, astfel:
1). Dacǎ X este vector și Y este o matrice, atunci se
reprezintǎ fiecare coloanǎ alui Y ȋn funcție de vectorul X.
2). Dacǎ X și Y sunt matrici de aceleași dimensiuni se
reprezintǎ coloanele lui Y ȋn funcție de coloanele lui X
• plot(Y) - reprezintǎ grafic pe Y ȋn funcție de indici, astfel:
1). Dacǎ Y este complex, plot(Y) este echivalentǎ cu
reprezentarea plot(real(Y),imag(Y)).
2). Dacǎ Y este vector linie sau coloanǎ, se reprezintǎ
graficul Y=Y(i), unde i este numǎrul de ordine al
elementului Y.
3). Dacǎ Y este matrice de ordinul (m x n) se repezintǎ
graficele Yj=Yj(i), unde i=1, 2, ..., n este numǎrul de
ordine al elementului de pe coloana j.
• plot(X,Y,S) - reprezintǎ pe Y ȋn funcție de X, cu proprietǎți
specificate de șirul de caractere S. Acest șir de
caractere poate conține 1, 2 sau 3 simboluri
corespunzǎtoare culorii, tipului de linie și markerul
asociat punctelor reprezentate. De exemplu: ’ro:’ va
reprezenta ȋn culoare roșie, cu linie punctatǎ și fiecare
punct va fi marcat cu un cerc. Șirul ’bs’ va reprezenta
doar pǎtrate de coloare verde ȋn fiecare punct și nu va
uni punctele cu nici o linie.
• plot(X1,Y1,S1,X2,Y2,S2,...) - reprezintǎ ȋn același grafic mai multe
perechi de date (X,Y,S) ȋn care X și Y sunt vectori sau
matrici și S sunt șiruri de caractere.
Culori (R G B) Tipuri de linie Markere puncte

b blue ( 0 0 1); albastru (implicit) _ continuǎ • punct


(implicit)

g green (0 1 0); verde : ȋn puncte o cerc

r red (1 0 0); _. linie punct x x


roșu

c cyan (0 1 1); __ ȋntreruptǎ + plus


turcoaz

m magenta (1 0 1); * steluțǎ


violet

y yellow (1 1 0); s pǎtrat


galben

k black (0 0 0); d romb


negru

w white (1 1 1); v triunghi ȋn jos


alb

^ triunghi ȋn sus

< triunghi la stȃnga

> triunghi la dreapta

p steluțǎ ȋn 5 colțuri

h steluțǎ ȋn 6 colțuri
Reprezentarea unei funcții y=f(x) ȋnseamnǎ ȋn primul rȃnd specificarea
domeniului de variație a lui x (ca vector) și apoi expresia lui y (ca tablou),
urmatǎ de reprezentarea graficǎ a datelor.
Sǎ reprezentǎm funcția y=x2-2·x+5 pentru x=[-20,20]. Vom folosi pentru
reprezentare valori diverse ale lui x, pe care ȋl putem defini cu operatorul
coloanǎ sau folosind comanda „linspace”.

>> plot(x,y)
>> plot(x,y,'*')
>> x=-20:4:20; % elementele lui x cu pas de 4, 11 valori
>> y=x.^2-2*x+5;
>> plot(x,y,'g-s') % trasam graficul cu segmente continue de culoare
>> % verde si punctele le marcam cu patrate - fig. 1.a
>> x1=linspace(-20,20,200); % vector cu 200 elemente
>> y1=x1.^2-2*x1+5;
>> plot(x1,y1,'r') % graficul de culoare rosie - fig. 1.b
a b
Figura 1 Moduri diferite de reprezentare a unei funcții
a - cu linii și markere punct verzi, b – cu linie roșie
Putem obține ambele curbe pe același grafic folosind
comanda „hold”.
Ȋn sintaxa „hold on” ține activǎ fereastra graficǎ și
valorile axelor x și y, astfel ȋncȃt noi reprezentǎri pot fi
adǎugate celor existente.
Comanda „hold off” revine la modul implicit al comenzii
„plot”, care șterge graficele anterioare și proprietǎțile
axelor ȋnainte de noi reprezentǎri grafice. Sintaxa „hold
all” pǎstreazǎ graficul, culoarea curentǎ și tipul liniei
folosite, astfel cǎ noile comenzi de reprezentare graficǎ
nu le pot schimba.
Cele douǎ grafice de mai ȋnainte le putem reprezenta
succesiv pe aceeași figurǎ:
>> plot(x,y,'g-s')
>> hold on
>> plot(x1,y1,'r')
>> hold off
și rezultatul este identic cu cel din fig. 2.

Figura 2 Reprezentarea simultanǎ a douǎ grafice


ȋn coordonate liniare
Dacǎ dorim sǎ trasǎm pe același grafic și funcția y=x2+1 pentru x=[-30,30]:

>> x2=-30:0.5:30;
>> y2=x2.^2+1;
>> plot(x2,y2,'c--d')
>> hold on
>> plot(x,y,'g-s')
>> plot(x1,y1,'r')
>> hold off

Figura 3 Reprezentarea simultanǎ a trei grafice


ȋn coordonate liniare
Valori uzuale folosite la reprezentarea axelor sunt:

axis equal - aceleași dimensiuni de reprezentare pe x și y,


ȋn valoare absolutǎ
axis image - la fel ca și axis equal, dar graficul se restrȃnge
corespunzǎtor valorilor x și y
axis normal - se revine la modul de reprezentare implicitǎ
axis square - reprezentare graficǎ intr-un pǎtrat (datele x și y
sunt reprezentate pe segmente de mǎrimi egale)
axis tight - seteazǎ limitele axelor la valorile datelor de
reprezentat
axis off - șterge axele x și y, rǎmȃn numai funcțiile
reprezentate
axis on - revine la setǎrile implicite sau cele deja efectuate
Alte comenzi utile ȋn reprezentǎrile grafice sunt:

box off - șterge linile care „ȋnchid” graficele ȋntr-un dreptunghi;


valoarea implicitǎ este „box on”
title(’șir-caractere’) - afișeazǎ titlul graficului ȋn partea centralǎ
superioarǎ a figurii
xlabel(’text’) - afișeazǎ un text asociat axei x
ylabel(’text’) - afișeazǎ un text asociat axei y
legend(’f1’,’f2’,...) - permite identificarea reprezentǎrilor grafice
f1, f2,...; plaseazǎ o legendǎ ȋn colțul drept superior
color - seteazǎ o culoare
linestyle - forma liniilor cu care se face afișarea
fontsize - mǎrimea caracterelor
text(x,y,’text’) - scrie șirul’text’ȋncepȃnd cu locația (x,y) pe grafic
figure(n) - creazǎ o figurǎ (fereastrǎ graficǎ) cu numǎrul n.
Dacǎ aceasta existǎ, se pot efectua diverse operații grafice
ȋn ea (devine fereastra graficǎ activǎ)
clf - șterge tot ȋn interiorul unei figuri.
Reprezentarea mai multor grafice ȋn aceeași fereastrǎ graficǎ

Se folosește funcția „subplot(m,n,p)” care ȋmparte fereastra


graficǎ ȋn m x n dreptunghiuri și selecteazǎ dreptunghiul p ca fiind
graficul activ. Graficele se identificǎ de la stȃnga la dreapta. Ȋn
aceste ferestre grafice se pot utiliza toate funcțiile prezentate
anterior

Exemplu: sǎ reprezentǎm separat și ȋmpreunǎ graficele funcțiilor


y1  sin(x  π/4), y2  sin(x)  cos(x), x  [-2 ,2 ] definite anterior.
>> subplot(2,2,1), plot(x1,y1,’r-‚) % 4 ferestre, in stanga sus
>> subplot(2,2,3), plot(x2,y2,’m—‚) % 4 ferestre, in stanga jos
>> subplot(1,2,2), plot(x1,y1,’r-‚,x2,y2,’m—‚) % 2 ferestre, in dreapta
Folosirea comenzii „subplot”
Reprezentarea ȋn coordonate logaritmice sau semilogaritmice
Ȋn cazul unor funcții cu domenii largi de variație a datelor
de ieșire și/sau intrare este preferabilǎ reprezentarea lor ȋn
coordonate semilogaritmice sau logaritmice. Funcțiile folosite
sunt urmǎtoarele:

semilogx(x,y) - reprezintǎ valorile axei x folosind logaritmul ȋn


baza 10, log10(x); valorile pe axa y rǎmȃn
neschimbate
semilogy(x,y) - reprezintǎ valorile axei y folosind logaritmul ȋn
baza 10, log10(y); valorile pe axa x rǎmȃn
neschimbate
loglog(x,y) - ambele axe de reprezentare sunt scalate logaritmic;
practic se reprezintǎ log10(y) ȋn funcție de log10(x).
Exemplu: reprezentarea ȋn coordonate logaritmice pe axa y a funcției
x2
f(x)  e pentru x=[0,20].

>> x=0:0.2:20;
>> y=exp(x.^2);
>> semilogy(x,y)
Funcții speciale ȋn reprezentǎri grafice
bidimensionale

MATLAB are mai multe funcții pentru reprezentǎri


grafice particulare. O listǎ parțialǎ a acestora
include „fill”, „polar”, „bar”, „barh”, „stem”,
„stairs”, „errorbar”, „hist”, „rose”, „compass”,
„comet”. Exemplele urmǎtoare prezintǎ utilizarea
cȃtorva funcții particulare ȋn aplicațiile grafice.
Reprezentarea graficǎ a unui poligon

Funcția „fill” are una din sintaxele urmǎtoare:

fill(x,y,c) – reprezintǎ un poligon definit de vectorii x și y


cu nuanțele de culoare c. Vȃrfurile poligonului sunt date
prin coordonatele (x,y). Dacǎ c este un șir de caractere
cu un singur caracter de culoare sau un vector cu trei
componente (r g b), poligonul este „umplut” cu o
singurǎ
culoare. Dacǎ c este un vector cu aceeași dimensiune ca
x și y interiorul poligonului este ȋn nuanțe de culoare
obținute prin interpolarea culorilor vȃrfurilor.

fill(x1,y1,c1,x2,y2,c2,...) - este folositǎ pentru


reprezentarea poligoanelor multiple.
Reprezentați pǎtratul definit de vectorii x=[1 4 4 1] și
y=[-2-2 3 3] folosind culoarea verde și triunghiul definit de
x2=[4 6 4], y2=[0 0 3] folosind culoarea roșie
>> x1=[1 4 4 1];
>> y1=[-2 -2 3 3];
>> x2=[4 6 4];
>> y2=[0 0 3];
>> fill(x1,y1,'g',x2,y2,'r')
Reprezentarea ȋn coordonate polare

Funcția de reprezentare ȋn coordonate polare are sintaxa:

polar(theta,r) - r este raza polarǎ iar unghiul theta (θ) este mǎsurat
ȋn sens trigonometric fațǎ de axa polarǎ x
polar(theta,r,s) - specificǎ ȋn plus tipul liniei folosite, care se
menționeazǎ ȋn șirul de caractere s.
Exemplu: reprezentați ȋn coordonate polare „trifoiul cu patru foi”, cu
ecuația r  2  sin(2  θ)
>> theta=linspace(0,2*pi,200);
>> r=2*sin(2*theta);
>> polar(theta,r)
Funcțiile MATLAB de transformare a coordonatelor
carteziene ȋn coordonate polare și viceversa sunt
„cart2pol”și respectiv „pol2cart”.
Reprezentarea graficelor cu bare
Funcțiile „bar”și „barh” reprezintǎ valorile unui vector sau matrice cu
bare verticale, respectiv orizontale.

Exemplu: reprezentarea cu bare a vectorului y:


>> y=[3 5 2 4 6 10];
>> bar(y);
>> barh(y);
Reprezentarea graficǎ a vectorilor

Funcția „compass(z)” sau „compass(x,y)” reprezintǎ


grafic vectori cu originea ȋn originea sistemului de
coordonate polar, raza r fiind modulul numǎrului
complex z=x+yi, cu x și y numere reale. Unghiul teta
(θ) este unghiul de fazǎ al numǎrului complex.

Funcțiile „feather(z)” sau „feather(x,y)” reprezintǎ


grafic vectori cu originea plasatǎ echidistant pe axa x.
Exemplu: reprezentați grafic vectorii z1=3+4i, z2=2-5i, z3=-3+2i și
z4=-2-3i folosind cele douǎ funcții.

>> z=[3+4i,2-5i,-3+2i,-2-3i];
>> compass(z)
>> grid on
>> feather(z);
>> grid on
Trasarea rapidǎ a graficelor bidimensionale

Trasarea rapidǎ a unor grafice se face folosind funcția „ezpolar”


pentru coordonate polare și „ezplot” pentru coordonate carteziene.

Exemplu: reprezentarea rapidǎ a „trifoiului cu patru foi” ȋn


coordonate polare și carteziene.
Ȋn coordonate polare: r  2  sin(2  θ) , θ  0,2π  . Transformarea ȋn
coordonate carteziene ȋnseamnǎ x  r  cosθ  și y  r  sin θ  , adicǎ
x=r·sin(2·θ)·cos(θ) și y=r·sin(2·θ)·sin(θ).
>> theta=linspace(0,2*pi,200);
>> r=2*sin(2*hteta);
>> ezpolar('2*sin(2*theta)') % automat θ  0,2π 
>>% graficul rapid in coorddonate carteziene
>> ezplot('2*sin(2*theta)*cos(theta)','2*sin(2*theta)*sin(theta)')

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