Sunteți pe pagina 1din 10

2.

2 – Partea teoretică 21

2. Calcul grafic. Reprezentări şi funcţii grafice

2.1. Scopul lucrării: Studiul principalelor funcţii MATLAB de reprezentare grafică;


Noţiuni generale despre generarea graficelor în 2D şi 3D; Reprezentarea grafică în coordonate
logaritmice şi polare. Crearea şi controlul ferestrelor grafice utilizând funcţiile de reprezentare
grafică cu axe multiple.

2.2. Partea teoretică

2.2.1. Reprezentări grafice elementare

MATLAB-ul furnizează un set de tehnici pentru reprezentarea grafică. De asemenea,


deţine numeroase funcţii grafice şi oferă diferite facilităţi pentru tipărirea şi exportul fişierelor de
date. Procedeul de vizualizare a datelor cuprinde o serie de operaţii matematice. Tipul
reprezentării grafice depinde, în mare măsura, de natura datelor (formatul acestora) şi de felul
informaţiilor pe care dorim să le obţinem de la graficul respectiv.
Pachetul de programe MATLAB conţine o bibliotecă de funcţii, atât pentru generarea
graficelor în coordonate liniare (bidimensionale x-y) 2D, cât şi pentru generarea graficelor în
coordonate tridimensionale (3D).
Reprezentarea grafică se poate face prin linii (continue, punctate, de contur etc.), cu bare,
în trepte, tip histogramă şi de asemenea, reprezentarea grafică a suprafeţelor. MATLABul permite
şi personalizarea graficelor (afişarea titlului, denumirea axelor, scrierea unui text pe grafic etc.),
adăugarea unei reţele pe grafic (grid) sau crearea şi controlul ecranului (divizarea ferestrelor) şi
al axelor.
În plus, există posibilitatea creării interfeţelor grafice interactive (Graphics User
Interface) cu ajutorul unor funcţii MATLAB (uicontrol, uimenu, uigetfile, uisetcolor). Pentru
realizarea acestor interfeţe MATLABul foloseşte programarea pe obiecte pentru controlul
interactiv al graficelor, utilizând câteva elemente de control predefinite [1, 16-17].

Pentru crearea graficelor există trei modalităţi de bază:


1. utilizarea funcţiilor MATLAB dedicate;
2. utilizarea liniilor de comenzi, utilizând fereastra de comandă (command window),
sau creând diferite fişiere-m (m-file);
3. prin combinarea celor două metode de mai sus. De exemplu, prin utilizarea unei
comenzi pt. crearea graficelor, iar apoi prin folosirea uneia dintre uneltele (tools)
interactive se poate modifica (personaliza) reprezentarea grafică obţinută.

Comanda plot generează un grafic în coordonate liniare. Se apelează cu una din cele 3
sintaxe:
plot(x) ; plot(x, y); plot(x1, y1, x2, y2, ..., xn, yn)

 Dacă x e un vector (linie sau coloană), comanda plot (x) va genera un grafic liniar
al elementelor vectorului x ca funcţie de indexul acestora, x=x(i), unde i=1, 2, ..., n
este nr. de ordine al elementului x. MATLABul va unii punctele vectorului printr-
o linie dreaptă.
22 Calculul grafic. Reprezentări şi funcţii grafice - 2

 Dacă x este o matrice, fiecare coloana va fi trasată separat pe acelaşi grafic. Dacă x
şi y sunt matrice de aceeaşi dimensiune, atunci comanda plot(x, y) va trasa grafic
coloanele lui y în funcţie de coloanele lui x.
 Dacă x este un vector, iar y o matrice, atunci coloanele lui y sunt trasate funcţie de
vectorul x;
 Dacă x e un număr complex, atunci plot (x) este echivalent cu plot(real(x),imag(x));

De exemplu, dacă x = [0 3.7 6.1 6.5 5.8 3.6];

Comanda plot(x) va genera graficul din figura 2.1.

Fig. 2.1. Graficul vectorului linie x trasat prin fiecare punct cu linie dreaptă.

Dacă x şi y sunt 2 vectori de aceeaşi lungime, comanda plot(x, y) va trasa grafic


elementele lui x (axa-x) funcţie de elementele lui y (axa-y).

Graficele se pot reprezenta utilizând linii, marchere şi culori.


Dacă se doreşte reprezentarea pe acelaşi grafic a mai multor funcţii (curbe), numeroase
simboluri şi/sau culori pot fi selectate pentru a face diferenţa. Astfel, instrucţiunea:

plot(a1,b1,’*r’, a2,b2,’+b’)

va trasa grafic prima caracteristică (curba) a1 funcţie de b1 cu culoare roşie (r de la red) utilizând
simbolul star (*), iar a doua curbă (a2, b2) va fi reprezentată cu culoarea albastru (blue) utilizând
simbolul plus (+).

2.2.2. Reprezentarea grafică în coordonate logaritmice şi polare

Pentru reprezentarea grafică în coordonate logaritmice sau semilogaritmice, se utilizează


funcţiile loglog, semilogx şi semilogy. Utilizarea acestor funcţii grafice este similară cu a celor
utilizate în paragraful anterior. Descrierea acestor comenzi este următoarea:
2.2 – Partea teoretică 23

 loglog(x, y) – scalează ambele axe generând graficul logaritmului în baza 10


(log10(x) vs log10(y));
 semilogx (x, y) – scalează logaritmic doar axa x (log10(x)), cealaltă axă fiind scalată
liniar;
 semilogy (x, y) – scalează logaritmic doar axa y (log10(y)), cealaltă axă fiind scalată
liniar;

Trebuie reţinut faptul că, deoarece logaritmul numerelor negative şi zero nu există,
datele care urmează sa fie reprezentate grafic pe o axa logaritmică sau semilogaritmică, nu trebuie
să includă valoarea zero sau valori negative.

2.2.3. Funcţii pentru generarea graficelor. Reprezentări grafice speciale

MATLAB-ul conţine o familie (un set) de funcţii pentru generarea graficelor. Cele mai
importante dintre ele sunt prezentate în acest paragraf.
Reprezentarea grafică cu bare se face cu funcţia bar şi se apelează cu una dintre
sintaxele: bar(y) – care trasează un vector de bare cu elementele vectorului y, sau bar(x, y ) – care
trasează un grafic de bare cu elementele vectorului y la locaţiile specificate de vectorul x, adică
y=y(x). Această funcţie creează un grafic de bare vertical, în care valorile vectorului y sunt
utilizate pt. a determina înălţimea barei, iar valorile vectorului x sunt folosite pt. a eticheta fiecare
bară.
Reprezentarea grafică a semnalelor discrete se face cu funcţia stem, sub forma unor linii
terminate cu cerculeţ la extremitatea opusă axei. Se apelează cu sintaxa stem(y) sau stem(x, y).
Graficele în trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de
eşantionare şi prelucrare a datelor. Reprezentarea grafică în trepte se face cu funcţia stairs, care
se apelează cu una din sintaxele stairs(y) sau stairs(x, y).
Calculul şi reprezentarea grafică a histogramelor se face cu funcţia hist, şi se apelează
cu una dintre sintaxele: hist(x) – calculează şi trasează histograma cu 10 segmente a datelor
vectorului x, hist(x, n) – calculează şi trasează histograma cu n segmente a datelor vectorului x şi
hist(x, y) – calculează şi trasează grafic histograma datelor vectorului x la abscisele specificate de
valorile vectorului y.
Funcţia compass reprezintă grafic vectori cu centrul de coordonate în originea sistemului
de coordonate. Se apelează cu una din sintaxele: compass(z) sau compass(x, y), unde z este
numărul complex:
z = x + iy, iar (x) şi (y) sunt numere reale (proiecţia vectorului pe abscisă şi ordonată).
Funcţia fplot generează un grafic cu anumite restricţii între limite specificate. Se
apelează cu una dintre sintaxele următoare:
fplot(’fun’, limite), fplot(’fun’, limite, n), fplot(’fun’, limite, n, unghi).

„Fun” este numele fişierului funcţie (şir de caractere), „limite” reprezintă limitele axei
x pentru care se realizează reprezentarea grafică, n reprezintă numărul de eşantioane ale funcţiei,
iar „unghi” este ceea mai mare modificare a unghiului dintre segmentele adiacente ale graficului.

2.2.4. Reprezentări grafice cu axe multiple

Funcţiile pentru reprezentările grafice cu axe multiple diferă faţă de celelalte funcţii
24 Calculul grafic. Reprezentări şi funcţii grafice - 2
grafice prin modalităţile de scalare a axelor.
Funcţia MATLAB
plotyy

generează un grafic cu 2 axe y (pe ambele părţi), şi se apelează cu una din sintaxele:

plotyy(x1, y1, x2, y2) sau plotyy(x1, y1, x2, y2, ’function1’, ’function2’)

în care şirul de caractere function, poate fi înlocuit cu orice funcţie MATLAB ce acceptă sintaxa
h = function(x, y)
cum ar fi funcţiile, care generează reprezentări grafice: plot, semilogx, semilogy, loglog sau stem.
Comanda plotyy(x1, y1, x2, y2) reprezintă grafic vectorul (matricea) x1 funcţie de y1, cu
axa y inscripţionatǎ pe partea stângă, şi x2 funcţie de y2 cu axa y pe partea dreaptă.
Comanda plotyy(x1, y1, x2, y2, ’function1’, ’function2’) utilizează funcţia function1(x1, y1)
pentru a reprezenta grafic setul de date pentru axa din partea stângă a ferestrei şi funcţia
function2(x2, y2) pentru a trasa grafic setul de date pentru axele din partea dreaptă.
Cu funcţia plotyy se poate reprezenta pe acelaşi grafic, pentru acelaşi set de date, o
scalare logaritmică pentru comparaţie, de exemplu, cu una liniară.
De asemenea, se pot genera grafice cu axe multiple, cu două axe x şi cu două axe y (axe
duble), independente. Cu această facilitate se pot reprezenta pe acelaşi grafic mai multe seturi de
date, având domenii diferite, utilizând o scalare proprie pentru fiecare axă.
Utilizând comenzile XaxisLocation şi YaxisLocation, se pot crea grafice scalate diferit
pentru fiecare set de date, utilizând partea dreaptă şi cea de sus a graficului, pentru o pereche de
axe x-y şi partea stângă şi cea de jos, pentru cealaltă pereche de axe x-y.

2.2.5. Reprezentări grafice tridimensionale (3D)

Funcţia MATLAB plot3 este o funcţie analoagă funcţiei plot, cu diferenţa că reprezintă
grafic linii şi puncte într-un spaţiu tridimensional (3D).
Dacă x, y şi z sunt trei vectori de aceeaşi lungime, funcţia plot3(x, y, z) generează o linie
reprezentată tridimensional prin punctele ale căror coordonate sunt elementele celor trei vectori.
Dacă X, Y şi Z sunt trei matrice coloană de aceeaşi dimensiune, atunci funcţia plot3(X,
Y, Z) va genera un grafic de linii tridimensionale obţinute din cele trei coloane ale matricei
respective.
Funcţia mesh reprezintă grafic suprafeţe 3D sub forma unor reţele, funcţia meshc
reprezintă grafic combinaţia suprafaţa 3D / linii de contur, reprezentate sub suprafaţa respectivă
ca proiecţii în planul bazei, iar funcţia meshz reprezintă grafic suprafeţe tridimensionale cu plan
de referinţa la cota zero.
Reprezentarea grafică a suprafeţelor se realizează utilizând comanda surf, în timp ce
funcţia surfc generează un grafic tridimensional cu liniile de nivel proiectate pe planul bazei.
Aceste reprezentări grafice sunt utile, în special, pentru vizualizarea matricelor, care sunt prea
mari pentru a putea fi reprezentate sub formă numerică, şi pentru funcţiile grafice de două
variabile.
Graficele generate cu funcţia surf afişează în acelaşi timp liniile conectate şi conturul
suprafeţelor colorate. Se apelează cu una din sintaxele următoare:

surf(Z), surf(X, Y, Z) sau surf(X, Y, Z, C)


2.3 – Desfăşurarea lucrării şi modul de lucru 25

Funcţia surf(Z) crează o suprafaţă tridimensională alcătuită din componentele matricei


Z, utilizând x=1:n şi y=1:m, unde [m, n] = size(Z). Z precizează culoarea şi înălţimea suprafeţei,
astfel încât culoarea va fi proporţională cu înălţimea suprafeţei.
Funcţia surf(X, Y, Z) crează o suprafaţă tridimensională ca şi în cazul precedent iar X şi
Y sunt vectori sau matrice care definesc componentele unei suprafeţe. Dacă X şi Y sunt vectori,
atunci lungimile lor length(X)=m şi length(Y)=n, unde [m, n] = size(Z).
Funcţia surf(X, Y, Z, C) crează, de asemenea, o suprafaţă colorată cu elementele definite
de matricea C.
Funcţia surfc este identică cu funcţia surf, exceptând liniile de nivel, care sunt
reprezentate sub suprafaţa respectivă, pe acelaşi grafic.

2.2.6. Crearea şi controlul ferestrelor grafice

MATLAB-ul are două ferestre grafice de bază: o fereastră de comandă şi o fereastră


grafică. Fereastra grafică poate fi împărţită în mai multe ferestre. De asemenea, MATLABul oferă
facilitatea de-a putea compara mai multe figuri sau grafice prin crearea, de exemplu, mai multor
grafice, în ferestre diferite, pe aceeaşi figură.
Funcţia subplot creează şi controlează ferestrele unui grafic şi poate fi apelată cu una
din sintaxele:
subplot(m, n, p) sau subplot(h).
Funcţia subplot(m, n, p) împarte ecranul într-o matrice [m x n], creează axele în sub-
fereastra p şi returnează identificatorul de control al noilor axe.
Argumentele m, n şi p trebuie să fie numere întregi în intervalul (1, 9). Scalarul m
precizează în câte sub-ferestre se împarte fereastra pe verticală, iar n specifică împărţirea ferestrei
pe orizontală.
De exemplu, comanda subplot(324) creează şase ferestre într-o figură (împarte o figură
în 6 ferestre) şi creează a patra fereastră ca reprezentare grafică curentă.
Orice fereastră poate fi înlocuită sau se poate modifica (schimba) poziţia fiecăreia.
Utilizând comanda clf , se poate şterge oricare dintre graficele curente, dar fereastra rămâne goala.
Textul din interiorul ferestrei grafice se poate insera, utilizând editorul de text al
MATLABului sau, utilizând funcţii dedicate, cum ar fi gtext(’z = x.3’) .
Alte comenzi/funcţii care pot fi utilizate împreună cu funcţia plot mai sunt: figure –
deschide o nouă figură, dacă se doreşte să se reprezinte mai multe grafice în acelaşi timp
(consecutiv), iar close – închide fereastra cu figura curentă.

2.3. Desfăşurarea lucrării şi modul de lucru

Partea practică a lucrării constă în utilizarea funcţiilor MATLAB de reprezentare grafică,


prezentate în partea teoretică a paragrafului precedent, şi generarea diferitelor tipuri de semnale,
atât în coordonate liniare, cât şi logaritmice, polare sau tridimensionale. De asemenea se vor
reprezenta grafic funcţiile trigonometrice utilizând ferestrele grafice şi axele multiple.

Exemplul 2.1: Să se reprezinte pe acelaşi grafic tensiunea - u(t) şi curentul - i(t) unui
circuit RL, pe intervalul de timp t=(0-20) ms, ştiind că u(t)=10cos(377t) şi i(t)=5cos(377t+60 0).
26 Calculul grafic. Reprezentări şi funcţii grafice - 2
Soluţie: Se scrie un fişier MATLAB-script cu următoarele secvenţe de comenzi:

%Tensiunea şi curentul unui circuit RL

t = 0 : 1e-3 : 20e-3; %vectorul timp


u=10 * cos(377 * t);
a_rad=(60 * pi / 180); % unghiul de fazǎ în radiani
i = 5 * cos(377 * t + a_rad);

plot(t, u, t, u,’*’,t, i, t, i,’o’), grid


title(’tensiunea şi curentul unui circuit RL’), xlabel(’timpul (s)’), ylabel(’tensiunea (V) şi
curentul (mA)’); text(0.003,1.5,’u(t)’), text(0.009,2,’i(t)’)

Figura 2.2 reprezintă graficul generat de secvenţa de program de mai sus.

Fig. 2.2. Reprezentarea grafică a tensiunii şi curentului unui circuit RL în regim staţionar sinusoidal.

Exemplul 2.2: Se dă fişierul de date din tabelul 2.1, care reprezintă frecvenţa funcţie de
factorul de amplificare (gain) a unui amplificator operaţional. Se cere să se reprezinte grafic în
coordonate semilogaritmice, frecvenţa versus factorul de amplificare (scală logaritmică pentru
frecvenţă şi liniară pentru factorul de amplificare). Să se tipărească titlul graficului şi mărimile
celor două axe reprezentate.

Tabelul 2.1: Frecvenţa funcţie de factorul de amplificare (gain) pentru un amplificator operaţional

Frecvenţa (Hz) Gain (dB) Frecvenţa (Hz) Gain (dB)


20 5 2000 34
40 10 5000 34
2.3 – Desfăşurarea lucrării şi modul de lucru 27

80 30 8000 34
100 32 10 000 32
120 34 12 000 30

Soluţie: Se scrie următorul fişier script:

%Reprezentarea grafică Bode pentru un amplificator operaţional

f=[20 40 80 100 120 2000 5000 8000 10000 12000 15000 20000];
g=[5 10 30 32 34 34 34 34 32 30 10 5]; semilogx(f, g)
title(’Digrama Bode pt. un amplificator’), xlabel(’Frecventa (Hz)’), ylabel(’Gain (dB)’)

Se obţine graficul din figura 2.3:

Fig. 2.3. Diagrama frecvenţei funcţie de factorul de amplificare (gain) pentru un amplificator.

Exemplul 2.3: Să se scrie un fişier function care să reprezinte grafic funcţia y=sin(x) / x
între limitele [-20, 20] cu n=50 de eşantioane, utilizând funcţia MATLABului de reprezentare
grafică fplot.

Soluţie: Se scrie următorul fişier function cu numele test.m:


function y=test(x)
y=sin(x)./x;

Cu secvenţa următoare, scrisă în fereastra de comandă:


fplot(’test’, [-20 20], 50); grid

Se obţine reprezentarea grafică din figura 2.4:


28 Calculul grafic. Reprezentări şi funcţii grafice - 2

Fig. 2.4. Reprezentarea grafică realizată cu funcţia fplot.

Exemplul 2.4: Să se reprezinte pe acelaşi grafic, tipărind axa y pe ambele părţi, două
funcţii matematice (exp şi sin) utilizând comanda plot ca funcţie grafică.

Soluţie: Se scrie un fişier script cu următoarea secvenţă:


x = 0:0.01:20; y1 = 200 * exp(-.05 * x).*sin(x); y2 = 0.8 * exp(-0.5 * x).*sin(10*x);
[AX, H1, H2] = plotyy(x, y1, x, y2, ’plot’) %comanda care separă cele
%două axe, atribuindu-i câte o figură (H1, H2) pentru fiecare axă
set(get(AX(1),'ylabel'),'String','Axa-y partea stânga') %comanda de inscripţionare a axei y din
stânga
set(get(AX(2),'ylabel'),'String','Axa-y partea dreapta') %comanda de inscripţionare a axei y din
dreapta

xlabel('0 la 20 \musec'),title('Graficul este inscripţionat cu axa y pe ambele parţi') %comenzi


% pentru inscripţionarea titlului şi a axei x

Şi se obţine graficul din figura 2.5:

Fig. 2.5. Reprezentarea grafică obţinută cu funcţia plotyy pentru etichetarea ambelor axe y.
2.3 – Desfăşurarea lucrării şi modul de lucru 29

Exemplul 2.5: Să se reprezinte grafic în 3D cu un pas de π / 50, un arc spiralat (spirală)


utilizând funcţiile sin(t) şi cos(t), ştiind că t=(0-10π). Să se inscripţioneze cele trei axe x, y şi z.

Soluţie: Cu secvenţa de mai jos se obţine graficul din figura 2.6:


t=0:pi/50:10*pi;
plot3(sin(t), cos(t), t)
Dacă X, Y şi Z sunt trei matrice coloană de aceeaşi dimensiune, atunci funcţia plot3(X,
Y, Z) va genera un grafic de linii tridimensionale obţinute din cele trei coloane ale matricei
respective.

Fig. 2.6. Reprezentarea grafică tridimensională a unei spirale.

Exemplul 2.6: Să se reprezinte grafic funcţiile sinus, cosinus şi tangentă, pe aceeaşi


figura dar în ferestre diferite.

Soluţie: Se scrie un fişier-m cu următorul conţinut:

x = linspace(0, 2*pi, 50); %funcţia linspace generează un vector linie cu 50 de puncte intre (0 - 2π)
y = sin(x); z = cos(x), w = tan(x);

subplot(2, 2, 1), plot(x, y); %generează o figura cu patru ferestre şi crează prima fereastră cu funcţia
%sin(x)
subplot(2, 2, 2), plot(x, z); % creaza a doua fereastra pentru funcţia cos(x) pe prima linie şi a doua
%coloana
subplot(2, 2, 3), plot(x, w) % creaza a treia fereastra pentru funcţia tan(x) pe a doua linie şi prima
%coloana

Se obţine graficul din figura 2.7:


30 Calculul grafic. Reprezentări şi funcţii grafice - 2

Fig. 2.7. Împărţirea unui grafic în patru ferestre utilizând funcţia subplot.

T.A.

Exemplul 2.7: Să se reprezinte grafic o suprafaţă cu liniile de contur corespunzătoare


vârfurilor acesteia.

Exemplul 2.8: Să se reprezinte grafic funcţia Z=X*exp(-X2-Y2) ca suprafaţă mesh, mesh


asociată cu linii de contur (meshc) şi ca suprafaţă cu plan de referinţă (meshz).

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