functia - utcluj.ro 1/laborator3... · 2020. 1. 21. · functia plot, este una din cele mai uzuale...

13
Laborator 3. Afisarea si interpretarea rezultatelor cu ajutorul functiilor de plotare 2D si 3D. Scopul lucrării Scopul acestei lucrari este de a afisa si de a interpreta rezultatele unor instructiuni sau fuctii cu ajutorul graficelor pe care MatLab-ul le pune la dispozitia utilizatorilor. Vom putea reprezenta rezultatele in urma instructiunilor fie intr-un sistem de axe 2D sau 3D pe baza unor functii predefinite ale acestui soft. Aparatura necesară - Staţii de lucru care au instalat Orcad9.2. si MatLab 7.1 Consideraţii teoretice In urma rularii unei instructiuni sau a unei insiruiri de instructiuni se obtin rezultate care trebuiesc afisate si apoi interpretate. Cea mai simpla metoda de afisare si interpretare a rezultatelor este folosirea functiei imread studiata in primul laborator. Astfel vom importa o imagine din afara programului si afisand aceasta imagine vom putea analiza pe un sistem de axe ceea ce s-a obtinut. x=imread('poza.jpg'); image(x); grid on; Grafica 2D Majoritatea rezultatelor pe care le vom obtine si apoi interpreta acestora o vom face pe un sistem cartezian de 2 axe X,Y. Pentru aceasta reprezentare, MatLab-ul pune la dispozitia utilizatorilor cateva functii predefinite. Functia Proprietatea ezplot Plotare rapida plot Plotare in funcie de X,Y plotyy Plotare cu doua axe Y loglog Plotare logaritmica pe X si pe Y semilogx Plotare logaritmica pe X semilogy Plotare logaritmica pe Y bar Afiseaza un grafic segmential (diagrame bara) barh Afiseaza un grafic segmential (diagrame bara) histogram Afiseaza o histograma a unui grafic segmential polar Tabel 1

Upload: others

Post on 18-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Laborator 3. Afisarea si interpretarea rezultatelor cu ajutorul functiilor de plotare 2D si 3D.

Scopul lucrării

Scopul acestei lucrari este de a afisa si de a interpreta rezultatele unor instructiuni

sau fuctii cu ajutorul graficelor pe care MatLab-ul le pune la dispozitia utilizatorilor. Vom putea reprezenta rezultatele in urma instructiunilor fie intr-un sistem de axe 2D sau 3D pe baza unor functii predefinite ale acestui soft. Aparatura necesară - Staţii de lucru care au instalat Orcad9.2. si MatLab 7.1 Consideraţii teoretice In urma rularii unei instructiuni sau a unei insiruiri de instructiuni se obtin rezultate care trebuiesc afisate si apoi interpretate. Cea mai simpla metoda de afisare si interpretare a rezultatelor este folosirea functiei imread studiata in primul laborator. Astfel vom importa o imagine din afara programului si afisand aceasta imagine vom putea analiza pe un sistem de axe ceea ce s-a obtinut. x=imread('poza.jpg'); image(x); grid on; Grafica 2D Majoritatea rezultatelor pe care le vom obtine si apoi interpreta acestora o vom face pe un sistem cartezian de 2 axe X,Y. Pentru aceasta reprezentare, MatLab-ul pune la dispozitia utilizatorilor cateva functii predefinite.

Functia Proprietatea

ezplot Plotare rapida

plot Plotare in funcie de X,Y

plotyy Plotare cu doua axe Y

loglog Plotare logaritmica pe X si pe Y

semilogx Plotare logaritmica pe X

semilogy Plotare logaritmica pe Y

bar Afiseaza un grafic segmential (diagrame bara)

barh Afiseaza un grafic segmential (diagrame bara)

histogram Afiseaza o histograma a unui grafic segmential

polar

Tabel 1

Page 2: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Functia ezplot, este o functie dupa cum ii sugereaza si numele de plotare rapida. Se caracterizeaza prin (‘functia de plotat’,’intervalul de calcul’). ezplot('x.^2/4+y.^2/5=15',[-15 15]); grid;

Fig. 1

Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. Aceasta functie poate sa reprezinte grafic un rezultat in functie de cele 2 coordonate, X,Y. x=-5:0.1:4; %x este o valoare din intervalul [-5,4] cu increment de 0.1 y = x.^3; %y este x^3 plot(y); %afisam grafic y

Fig. 2

Reprezentarea grafica pe care am obtinut-o reprezinta rezolvarea ecuatiei y=x3 .

Daca vizualizam atent figura observam ca pe axa x suntem intr-un interval de la 0 la 91.

Page 3: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Asta deoarece y are 91 de valori in intervalul x pe care l-am ales. (se scrie in linia de comanda length(y)).

Pentru a reprezenta corect aceasta ecuatia vom scrie:

x=-5:0.1:4; %x este o valoare din intervalul [-5,4] cu increment de 0.1 y = x.^3; %y este x^3 plot(x,y); %afisam grafic y

Fig. 3

In acest moment pe axa x avem exact intervalul pe care l-am stabilit initial. Se

observa ca, curbele grafice sunt identice doar ca in reprezentarea a doua indeplineste conditiile initiale impuse.

Daca adaugam comenzilor anterioare si comanda de caroiaj vom obtine un grafic usor de citit si interpretat. grid on; %caroiaj

Fig. 4

De asemenea un grafic este usor interpretabil daca are un titlu, are specificatiile celor 2 axe, o legenda a graficelor in cazul in care in aceasi fereastra se suprapun mai

Page 4: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

multe astfel de grafice, punctele de conjunctie ale functiei sunt vizibile, daca graficele au culori diferite sau alte elemente care pot usura vizualizarea unui asemenea grafic.

Pentru toate aceste detali MatLab-ul ofera o serie de proprietati ale acestor functii de reprezentare grafica.

Functia Proprietatea

axis Seteaza axele vizibile sau invizibile title Afiseaza titlul graficului

xlabel Afiseaza text pe axa X ylabel Afiseaza text pe axa Y text Afiseaza text pe grafic gtext Afiseaza text pe grafic la trecerea cu mousul asupra unui grafic color Seteaza o culoare

linestyle Forma liniilor cu care se face afisarea fontsize Dimensiunea caracterelor legend Permite inserarea unei legende grid Permite plasarea caroiajului

linewidth Grosimea liniei hold Permite stoparea unui grafic pe axe

Tabel 2

Pentru culorile cu care vom afisa graficele MatLab-ul recunoaste implicit urmatoarele culori:

Culoarea Numele Prescurtarea

albastru blue b Verde Green g Rosu Red r

Galben Yellow y Cyan Cyan c

Purpuriu Magenta m Negru Black k Alb White w

Tabel 3

Pentru tipul liniei cu care realizam afisarea grafica putem sa alegem din tabelul urmator una din liniile recunoscute de functiile de plotare.

Tipul liniei Prescurtarea

Linie continua - Linie punctata : Linie si punct -.

Page 5: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Linie intrerupta -- Tabel 4

Pentru a marca pe grafic punctele de conjuctie pe care functia le ploteaza putem

utiliza urmatorul tabel:

Simbol Tipul de Marker

. Punct o Cerculet x X + Plus * Steluta s Patrat d Romb v Triunghi sus ^ Triunghi jos < Triunghi stanga > Triunghi dreapta p Stea cu 5 varfuri h Stea cu 6 varfuri

Tabel 5 Folosind fuctiile enumerate mai sus sa reprezentam grafic in acesasi sistem de axe

3 semnale sinusoidale defazate intre ele.

f=50; %setam o frecventa T=1/f; %calculam o perioada t=0:0.001:4*T %alegem um interval de timp x=sin(2*pi*f*t); %calculam primul sinus x1=sin(2*pi*f*(t-T/3)); %calculam al doilea sinus x2=sin(2*pi*f*(t-T/2)); %calculam al 3 sinus plot(t,x,'-or'); %afisam primul sinus hold on; %il mentinem pe axe plot(t,x1,':db'); %afisam al doilea sinus hold on; %il mentinem pe axe plot(t,x2,'--Xg'); %afisam cel de-al treilea sinus grid on; title('Reprezentare sinus');%dam titlu graficului xlabel('timp [s]'); %scriem text pe axa x ylabel('Amplitudine [V]'); %scriem text pe axa y legend('x1','x2','x3'); %inseram o legenda

Page 6: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Rezultatul acestor instructiuni este :

0 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04-1

-0.8

-0.6

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1Reprezentare sinus

timp [s]

Am

plit

udin

e [

V]

x1

x2

x3

Fig. 5

Se observa in aceasta figura ca fiecare din cele 3 sinusuri au culorile diferite asa cum s-au setat, punctele de conjunctie apar clar pe grafic, este pus un titlu, specificatii pe cele 2 axe si o legenda. In codul scris apare functia hold on care are proprietatea de a mentine un grafic atunci cand un altul urmeaza sa fie plotat. Putea scrie cele trei sinusuri in aceasi functie plot deoarece baza de timp ale acestora este aceasi. plot(t,x,'-or',t,x1,':db',t,x2,'--Xg'); grid on;

Putem spune ca afisarea unui grafic cu ajutorul functiei plot este simpla indiferent daca datele de intrare sunt de forma unor vectori sau a unor matrici daca tinem cont de cateva reguli simple :

plot(x) – daca x este un vector atunci vom genera un grafic in functie de valoarea lui x si pozitia acestuia in vector plot(x,y) – daca x si y sunt vectori de aceasi lungine atunci vom avea un grafic de y in functie de x

Sa presupunem ca avem de afisat urmatorul set de date: x1 = 0:.1:20; %x1 i-a o valoare in intervalul [0 20] y1 = x1.*sin(x1); %functia y1 x2 = 10:.2:25; %x2 i-a o valoare intre [10 25] y2 = 50*x2; %functia y2 Daca o reprezentam grafic cele 2 functi cu ajutorul plot vom obtine rezultatul din figura urmatoare:

Page 7: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Fig. 6

Nu pare deloc un grafic concludent, de aceea vom folosi functia plopyy, o functie cu ajutorul careia vom avea 2 axe y pentru reprezentare. [axeshandles,line1handle,line2handle]=plotyy(x1,y1,x2,y2); set(line1handle,'linestyle','-','color','red'); set(line2handle,'linestyle','--','color','g'); grid; title('y1 is the blue line, y2 is the green dashed line'); axes(axeshandles(1)); ylabel('y1=x.*sin(x)'); axes(axeshandles(2)); ylabel('y2=50*x','color','k'); xlabel('x'); Rezultatul se poate vizualiza in figura 7.

0 5 10 15 20 25-20

-15

-10

-5

0

5

10

15

20Reprezentare cu ajutorul plotyy

y1=

x.*

sin

(x)

0 5 10 15 20 25500

600

700

800

900

1000

1100

1200

1300

y2=

50*x

x

Fig. 7

Page 8: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

In analiza circuitelor electronice de multe ori v-a trebui sa reprezentam logaritmic rezultatele obtinute. Daca ne gandim la un filtru castigul e exprimat de tensiunea de iesire pe tensiunea de intrare in functie de frecventa.

Frecventa Castig Frecventa Castig 20 5 2000 34 40 10 5000 34 80 30 8000 34 100 32 10000 32 120 34 12000 30

15000 10 20000 5 Tabel 6

f=[20 40 80 100 120 2000,... % incarc vectorul frecventa 5000 8000 10000 12000 15000 20000]; g=[5 10 30 32 34 34 34 34 32 30 10 5]; % incarc vectorul castig semilogx(f,g,'-sr','linewidth',2); % afisez logaritmic pe x grid on; title('Reprezentare logaritmica'); xlabel('frecventa [Hz]'); ylabel('castigul [dB]');

Fig. 8

Similar se foloseste functia semilogy, doar ca acum y va fi logaritmic si x liniar. Daca se doreste o reprezentare grafica logaritmica atat pe x cat si pe y vom folosi functia loglog.

Page 9: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Fig. 9

Reprezentarea logaritmica are la baza trei functii cu ajutorul carora putem realiza logarea axelor: semilogx(x,y): - genereaza un grafic de log10(x) versus axa y liniara semilogy(x,y): - genereaza un grafic cu axa x liniara versus log10(y) loglog(x,y): - genereaza un grafic de log10(x) versus log10(y)

O alta reprezentare 2D este aceea a diagramelor bara. Aceasta reprezentare se caracterizeaza prin funcia bar sau barh. x=1:3:33; y=[66 56 50 3 89 5 78 65 4 25 99]; bar(x,y); grid on;

Fig. 10

Page 10: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Daca am folosi functia barh am obtine:

Fig. 11

MatLab-ul permite de asemenea afisarea mai multor ferestre de grafice in aceasi figura. Pentru aceasta vom folosi functia subplot. Aceasta functie se caracterizeaza prin 3 valori pe care utilizatorul le poate alege dupa dorinta sa. subplot (a b c) , unde a – reprezinta numarul de ferestre pe verticala b – reprezinta numarul de ferestre pe orizontala c – pozitia in care vrem sa afisam.

Fig. 12

Fig. 13

Page 11: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

In figura anterioara am pozitionat 9 astfel de sisteme de axe pentru reprezentari grafice.

Un alt exemplu:

Fig. 14

Grafica 3D Un alt tip de reprezentare este cel in grafica 3D. Acum vom avea un sistem de 3

axe X,Y,Z, deci v-a fi nevoie de 3 parametri ai unei fucntii. Una din functiile care reprezinta grafica 3D este functia plot3.

t = 0:pi/50:10*pi; subplot(221) plot(t,sin(t),'-r'); %reprezint 2D sinus grid on; subplot(223) plot(t,cos(t),'-g') %reprezint 2D cosinus subplot(122) plot3(sin(t),cos(t),t,':pb'); %reprezint 3D

Fig. 15

Page 12: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

In figura 15 se observa reprezentarea 3D a funcitiilor sinus si cosinus pe un interval de timp. La fel ca si functia plot, plot3 permite anumite setari ale graficului reprezentat, legat de modul de aparitie.

De cele mai multe ori prin grafica 3D se doreste sa se reprezinte grafic suprafete, mai mult decat simple curbe.In acest scop, Matlab ne-a pus la dispozitie doua functii speciale: surf si mesh.

Mesh aceasta functie realizeaza un schelet al unei suprafete data de coordonatele x, y si z.

[X, Y] = meshgrid(-pi:pi/10:pi); Z = sin (X) .* sin (Y); mesh (Z);

Fig. 16

Surf se foloseste pentru a vizualiza functii matematice intr-o suprafata

rectangulara.

[X, Y] = meshgrid(-pi:pi/10:pi); Z = sin (X) .* sin (Y); surf (Z);

Fig. 17

Page 13: Functia - utcluj.ro 1/Laborator3... · 2020. 1. 21. · Functia plot, este una din cele mai uzuale functii de plotare intr-un sistem 2D. ... genereaza un grafic de log10(x) versus

Meshgrid realizeaza o transformare a domeniului specificat de vectorii x, y in doua sau mai multe matrici, in functie de cati parametrii trebuie sa returneze, in acest caz x, y, care va fi folosita la reprezentarea acestora in grafica 3D.Liniile matricii de iesire vor fi copii ale vectorului x, iar coloanele matricii y vor fii copii ale vectorului y.

Tema 1.Sa se analizeze toate functiile prezentate.

2.Sa se reprezinte graphic functia:

5

32

x

xxf , pentru x [-5,5]

3.Sa se reprezinte graphic functia:

2sin22

xexf x

4. Se dau functiile m(t), c(t), si s(t) caracteristice unui sistem de comunicatii:

m(t)=4cos(120pi*t)+ 2cos(240pi*t) c(t)= 10cos(10000pi*t) s(t)=m(t)*c(t) sa se reprezinte grafic cele 3 functii folosind functia subplot.