1 / 26

3. Calcul grafic. Reprezentări si funcţii grafice

3. Calcul grafic. Reprezentări si funcţii grafice. MATLABul furnizează un set de tehnici pentru reprezentarea grafica D etine numeroase funcţii grafice si oferă diferite facilitaţi pentru tipărirea si exportul fişierelor de date ;

Télécharger la présentation

3. Calcul grafic. Reprezentări si funcţii grafice

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 3. Calcul grafic. Reprezentări si funcţii grafice • MATLABul furnizează un set de tehnici pentru reprezentarea grafica • Detine numeroase funcţii grafice si oferă diferite facilitaţi pentru tipărirea si exportul fişierelor de date ; • Tipul reprezentării grafice depinde in mare măsura de natura datelor (formatul acestora) si de felul informatiilor pe care dorim sa le obtinem de la graficul respectiv; • Pachetul de programe MATLAB conţine o librarie de functii, atat pentru generarea graficelor in coordonate liniare (bidimensionale x-y) 2D cat si pentru generarea graficelor in coordonate tridimensionale (3D) ; • Reprezentarea grafica se poate face prin linii (continue, punctate, de contur etc), cu bare, in trepte, tip histograma si de asemenea, reprezentarea grafica a suprafetelor • MATLABul permite si personalizarea graficelor (afisarea titlului, denumirea axelor, scrierea unui text pe grafic etc), adaugarea unei retele pe grafic (grid) sau crearea si controlul ecranului (divizarea ferestrelor) si al axelor; • Exista posibilitatea creării interfetelor grafice interactive (Graphics User Interface) cu ajutorul unor funcţii MATLAB (uicontrol, uimenu, uigetfile, uisetcolor). Pentru realizarea creării acestor interfeţe MATLABul foloseste programarea pe obiecte pentru controlul interactiv al graficelor, utilizand cateva elemente de control predefinite .

  2. Reprezentări si funcţii grafice • Pentru crearea graficelor exista trei modalitati de baza: • utilizarea funcţiilor MATLAB pentru generarea graficelor • utilizarea liniilor de comenzi, utilizând fereastra de comenzi (command window), sau creând diferite fişiere-m • prin combinarea celor doua 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 grafica obţinuta. • Comanda plot generează un grafic in coordonate liniare. Se apeleaza cu una din sintaxele: plot(x); plot(x, y); plot(x1, y1, x2, y2, ..., xn, yn) • Daca x e un vector (linie sau coloana), comanda plot (x) va genera un grafic liniar al elementelor vectorului x ca functie 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 dreapta. • Daca x este o matrice, fiecare coloana va fi trasata separat pe acelaşi grafic. Daca x si y sunt matrice de aceeasi dimensiune, atunci comanda plot(x, y) va trasa grafic coloanele lui y in functie de coloanele lui x. • Daca x este un vector, iar y o matrice, atunci coloanele lui y sunt trasate functie de vectorul x y = f(x); • Daca x e un număr complex, atunci plot (x) este echivalent cu plot(real(x),imag(x));

  3. Reprezentări si funcţii grafice. Exemple • De exemplu, daca x=[0 3.7 6.1 6.5 5.8 3.6]; Comanda plot(x) va genera graficul din figura ; • Daca x si 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).

  4. Reprezentări si funcţii grafice. Exemple • Ex. 16. Sa se reprezinte grafic funcţia y(t)=6e-2t pentru intervalul de timp t=(0-4) secunde, avand pasul de eşantionare de 0.05. • Rezolvare: Se scrie un fisier script, sau următoarea secvenţa MATLAB in fereastra de comenzi (command window): t = 0:0.05:4; y =6 * exp(-2 *t); plot(t, y) • title(’Raspunsul unui circuit RC’) % tipareste titlul graficului • xlabel(’Timpul (s)’) % tipareste numele variabilei axei x • ylabel(’Tensiunea (V)’) % precizeaza parametrul (variabila) axei y • grid %traseaza o retea de linii pe grafic

  5. Reprezentări si funcţii grafice. Exemple • Ex. 17: Sa se reprezinte pe acelaşi grafic tensiunea (u(t)) si curentul (i(t)) unui circuit RL, pentru intervalul de timp t=(0-20) ms ştiind ca u(t)=10cos(377t) si i(t)=5cos(377t+600). • Soluţie: Se scrie un fişier MATLAB-script cu următoarele secvenţe de comenzi: %Tensiunea si curentul unui circuit RL t =0:1e-3:20e-3; %vectorul timp u =10*cos(377*t); a_rad=(60*pi/180); %unghiul de faza in radiani i=5*cos(377*t+a_rad); plot(t, u, t, u,’*’,t, i, t, i,’o’), grid title(’tensiunea si curentul unui circuit RL’), xlabel(’timpul (s)’), ylabel(’tensiunea (V) si curentul (mA)’); text(0.003,1.5,’u(t)’), text(0.009,2,’i(t)’) Fig. Reprezentarea grafic a tensiunii si curentului unui circuit RL in regim stationar sinusoidal.

  6. Reprezentarea grafica in coordonate logaritmice si polare • Pentru reprezentarile grafice in coordonate logaritmice sau semilogaritmice se utilizeaza functiile loglog, semilogx si semilogy. Utilizarea acestor functii grafice este similara cu a celor utilizate in paragraful anterior. • Descrierea acestor comenzi este urmatoarea: • loglog(x, y) – scaleaza ambele axe generand graficul logaritmului in baza 10 (log10(x) vs log10(y)); • semilogx (x, y) – scaleaza logaritmic doar axa x (log10(x)), cealalta axa fiind scalata liniar; • semilogy (x, y) – scaleaza logaritmic doar axa y (log10(y)), cealalta axa fiind scalata liniar; • Obs: Trebuie retinut faptul ca, deoarece logaritmul numerelor negative si zero nu exista, datele care urmeaza sa fie reprezentate grafic pe o axa logaritmica sau semilogaritmica, nu trebuie sa includa valoarea zero sau valori negative. • Reprezentarea grafica in coordonate polare se face cu functia polar, si se apeleaza cu una din sintaxele urmatoare: polar (theta, rho) sau polar (theta, rho, ’linie tip’) • Unde theta si rho sunt vectori, theta fiind unghiul in radiani iar rho reprezinta amplitudinea semnalului respectiv.

  7. Reprezentarea grafica in coordonate logaritmice. Exemplu • Exemplu: Se da fisierul de date (f,g), care reprezinta frecventa functie de factorul de amplificare (gain) a unui amplificator operational. Sa se reprezinte grafic in coordonate semilogaritmice frecventa versus factorul de amplificare (scala logaritmica pentru frecventa si liniara pentru factorul de amplificare). Sa se tipareasca titlul graficului si marimile celor doua axe reprezentate. • Solutie: Se scrie urmatorul fisier script: • %Reprezentarea grafica Bode pentru un %amplificator operational 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(’Diagrama Bode pt. un amplificator’), xlabel(’Frecventa (Hz)’), ylabel(’Gain (dB)’)

  8. 3.1.2. Funcţii pentru generarea graficelor. Reprezentări grafice speciale • MATLABul conţine o familie (set) de functii pentru generarea graficelor. Cele mai importante dintre ele sunt descrise in tabelul 10 (pg. 36). • Reprezentarea grafica cu bare se face cu functia bar si se apeleaza cu una dintre sintaxele: bar(y)– care traseaza un vector de bare cu elementele vectorului y, sau bar(x, y )– care traseaza un grafic de bare cu elementele vectorului y la locatiile specificate de vectorul x, adica y=y(x). Aceasta functie creeaza un grafic de bare vertical, in care valorile vectorului y sunt utilizate pt. a determina inaltimea barei, iar valorile vectorului x sunt folosite pt. a eticheta fiecare bara. • Reprezentarea grafica a semnalelor discrete se face cu functia stem, sub forma unor linii terminate cu cerculet la extremitatea opusa axei. Se apeleaza cu sintaxa stem(y) sau stem(x, y). • Graficele in trepte sunt utilizate la reprezentarea diagramelor sistemelor numerice de esantionare si prelucrare a datelor. Reprezentarea grafica in trepte se face cu functia stairs, care se apeleaza cu una din sintaxele stairs(y) sau stairs(x, y). • Functiamesh - Traseaza grafic o retea sub forma de plasa; • Functia fplot genereza un grafic cu anumite restrictii intre limite specificate. Se apeleaza cu una dintre sintaxele urmatoare: fplot(’fun’, limite), fplot(’fun’, limite, n), fplot(’fun’, limite, n, unghi).

  9. 3.1.2. Funcţii pentru generarea graficelor. Exemple. • Ex. 20: Sa se reprezinte graficul in trepte al functiei y=sin(x). • Rezolvare: Cu urmatoarea secventa MATLAB se obtine graficul din figura 12: x=0:.2:6; y=sin(x); stairs(x, y); • Functia compass reprezinta grafic vectori cu originea in originea sistemului de coordonate. Se apeleaza cu una din sintaxele: compass(z) sau compass(x, y), • unde z este numarul complex • z = x + iy, iar x si y sunt numere reale (proiectia vectorului pe abscisa si ordonata). • Ex. 21: Sa se reprezinte grafic vectorii z1=2-5i si z2=3+2i. • Solutie: Cu secventa urmatoare se obtine graficul din figura: z=[2-5*i,3+2*i]; compass(z);grid

  10. 3.1.2. Funcţii pentru generarea graficelor. Exemple. • Ex. 22: Sa se scrie un fisier function care sa reprezinte grafic functia y=sin(x) / x intre limitele [-20, 20] cu n=50 de esantioane, utilizand functia MATLAB de reprezentare grafica fplot. • Solutie: Se scrie urmatorul fisier function cu numele test.m: function y = test(x) y =sin(x)./x; • Cu secventa urmatoarea scrisa in fereastra de comanda: fplot(’test’, [-20 20], 50); grid

  11. 3.1.2. Funcţii pentru generarea graficelor. Exemple. x=0:0.05:5; y=sin(x.^2); plot(x,y); xlabel('Time') ylabel('Amplitude')

  12. 3.1.2. Funcţii pentru generarea graficelor. Exemple. x = -2.9:0.2:2.9; bar(x,exp(-x.*x));

  13. 3.1.2. Funcţii pentru generarea graficelor. Exemple. x=0:0.25:10; stairs(x,sin(x));

  14. 3.1.2. Funcţii pentru generarea graficelor. Exemple. x=-2:0.1:2; y=erf(x); e = rand(size(x))/10; errorbar(x,y,e);

  15. 3.1.2. Funcţii pentru generarea graficelor. Exemple. t=0:0.01:2*pi; polar(t,abs(sin(2*t).*cos(2*t)));

  16. 3.1.2. Funcţii pentru generarea graficelor. Exemple. x = 0:0.1:4; y = sin(x.^2).*exp(-x); stem(x,y)

  17. 3.1.2. Funcţii pentru generarea graficelor. Exemple. load count.dat scatter(count(:,1),count(:,2),'r*') xlabel('Number of Cars on Street A'); ylabel('Number of Cars on Street B');

  18. 3.1.2. Funcţii pentru generarea graficelor. Exemple. subplot(1,1,1); gplot(B(1:30,1:30),V(1:30,:),'b-'); for j = 1:30, text(V(j,1),V(j,2),int2str(j),'FontSize',10); end axis off equal

  19. 3.1.3. Reprezentări grafice cu axe multiple • Funcţiile pentru reprezentările grafice cu axe multiple difera fata de celelalte funcţii grafice prin modalităţile de scalare a axelor. • Funcţia MATLAB plotyy genereaza un grafic cu 2 axe y (pe ambele parti). • Se apeleaza cu una din sintaxele: plotyy(x1, y1, x2, y2) sau plotyy(x1, y1, x2, y2, ’function1’, ’function2’); in care şirul de caractere function, poate fi inlocuit cu orice functie MATLAB ce accepta sintaxa h = function(x, y), cum ar fi functiile, care genereaza reprezentări grafice: plot, semilogx, semilogy, loglog sau stem. • Comanda plotyy(x1, y1, x2, y2)reprezinta grafic vectorul (matricea) x1 funcţie de y1, cu axa y inscriptionata pe partea stanga, si x2 functie de y2 cu axa y pe partea dreapta. • Comanda plotyy(x1, y1, x2, y2, ’function1’, ’function2’) utilizeaza functia function1(x1, y1) pentru a reprezenta grafic setul de date pentru axa din partea stanga a ferestrei si functia function2(x2, y2) pentru a trasa grafic setul de date pentru axele din partea dreapta. • De asemenea, se pot genera grafice cu axe multiple, doua axe x si cu doua axe y (axe duble) independente. Prin aceasta facilitate se pot reprezenta pe acelasi grafic mai multe seturi de date, avand domenii diferite, utilizand o scalare proprie pentru fiecare axa (exemplul 24).

  20. 3.1.3. Reprezentări grafice cu axe multiple. Exemplu • Ex. 23: Sa se reprezinte pe acelasi grafic, tiparind axa y pe ambele parti, doua functii matematice (exp si sin) utilizand comanda plotSolutie: Se scrie un fisier script cu urmatoarea secventa: • 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 separa cele doua axe, %atribuindu-i cate o figura (H1, H2) pentru %fiecare axa • set(get(AX(1),'ylabel'),'String','Axa-y partea stanga') • %comanda de inscriptionare a axei y din stanga • set(get(AX(2),'ylabel'),'String','Axa-y partea dreapta') • %comanda de inscriptionare a axei y din dreapta • xlabel('0 la 20 \musec'),title('Graficul este inscriptionat cu axa y pe ambele parti') • %comenzi% pentru inscriptionarea titlului si a axei x

  21. 3.2. Reprezentări grafice tridimensionale (3D) • Functia MATLAB plot3 este o functie analoaga functiei plot cu diferenta ca reprezinta grafic linii si puncte intr-un spatiu tridimensional (3D). • Daca x, y si z sunt trei vectori de aceeasi lungime functia plot3(x, y, z) genereaza o linie reprezentata tridimensional prin punctele ale căror coordonate sunt elementele celor trei vectori. • Daca X, Y si Z sunt trei matrici coloana de aceeaşi dimensiune atunci functia plot3(X, Y, Z) va genera un grafic de linii tridimensional obţinute din cele trei coloane ale matricii respective. • Functia mesh (Fig. 19) reprezinta grafic suprafete 3D sub forma unor retele, functia meshc reprezinta grafic combinatia suprafata 3D / linii de contur, reprezentate sub suprafata respectiva ca proiectii in planul bazei, iar functia meshz reprezinta grafic suprafete tridimensionale cu plan de referinta la cota zero. • Reprezentarea grafica a suprafetelor se realizeaza utilizand comanda surf iar functia surfc genereaza un grafic tridimensional cu liniile de nivel proiectate pe planul bazei. Aceste reprezentari grafice sunt utile in special pentru vizualizarea matricilor, care sunt prea mari pentru a putea fi reprezentate sub forma numerica, si pentru functiile grafice de doua variabile.

  22. 3.2. Reprezentări grafice 3D. Exemple • Exemplu: Sa se reprezinte grafic in 3D cu un pas de π / 50, un arc spiralat (spirala) utilizând funcţiile sin(t) si cos(t), ştiind ca t=(0-10π). Sa se inscripţioneze cele trei axe x, y si z. • Soluţie: Cu secvenţa următoare se obţine graficul din figura: t =0:pi/50:10*pi; plot3(sin(t), cos(t), t)

  23. 3.2. Reprezentari grafice 3D. Exemple • Ex. 26: Sa se reprezinte grafic intr-un spatiu 3D trei matrici coloana (X, Y si Z) utilizand functia mesh. • Solutie: Se scrie un fisier script cu secventa urmatoare, care va returna graficul din fig. 19. [X, Y] = meshgrid([-2:0.1:2]); Z = X.*exp(-X.^2-Y.^2); plot3(X,Y,Z), grid on • Ex. 27: Sa se reprezinte grafic functia Z=X*exp(-X2-Y2) ca suprafata mesh, mesh asociata cu linii de contur (meshc) si ca suprafata cu plan de referinta (meshz). • Solutie: Cu secventa urmatoare se obtin reprezentarile grafice din fig. 20. [X, Y] = meshgrid(-2:0.2:2, -2:0.2:2); Z = X.*exp(-X.^2-Y.^2); subplot(131),mesh(X,Y,Z), subplot(132),meshc(X,Y,Z), subplot(133),meshz(X,Y,Z)

  24. 3.3.Crearea si controlul ferestrelor grafice • MATLABul are doua ferestre grafice de baza: o fereastra de comanda si o fereastra grafica ; • Fereastra grafica poate fi impartita in mai multe ferestre ; • MATLABul ofera facilitatea de-a putea compara mai multe figuri sau grafice prin crearea, de exemplu, mai multor grafice in ferestre diferite pe aceeasi figura. • Functia subplot creeaza si controleaza ferestrele unui grafic si poate fi apelata cu una din sintaxele: subplot(m, n, p) sau subplot(h). • Functia subplot(m, n, p) împarte ecranul intr-o matrice [m x n], creează axele in subfereastra p si returneaza identificatorul de control al noilor axe. • Argumentele m, n si p trebuie sa fie numere intregi in intervalul (1, 9). Scalarul m precizeaza in cate subferestre se imparte fereastra pe verticala, iar n specifica impartirea ferestrei pe orizontala. • De exemplu comanda subplot(324) creaza sase ferestre intr-o figura (imparte o figura in 6 ferestre) si creaza a patra fereastra ca reprezentare grafica curenta

  25. 3.3.Crearea si controlul ferestrelor grafice. Exemplu • Ex.: Sa se reprezinte grafic o forma de unda sinusoidala, una cosinusoidala si o forma de unda tangenţiala, pe aceeaşi figura dar in ferestre diferite. • Solutie: Se scrie un fisier-M cu următorul continut: x = linspace(0, 2*pi, 50); • %functia 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) %genereaza o figura cu patru ferestre si creaza %prima fereastra cu functia sin(x) subplot(2, 2, 2), plot(x, z) % creaza a doua fereastra pentru functia cos(x) %pe prima linie si a doua coloana subplot(2, 2, 3), plot(x, w) % creaza a treia fereastra pentru functia tan(x) %pe a doua linie si prima coloana

More Related