Sunteți pe pagina 1din 15

Ministerul Educației al Republicii Moldova

Universitatea Tehnică a Moldovei


Facultatea Calculatoare, Informatică și Microelectronică
Departamentul Ingineria Software și Automatică

Raport
Lucrare de laborator Nr. 1
Disciplina: Prelucrarea semnalelor
Tema: Introducere în Matlab

A efectuat:
St.gr.TI-143 Besliu D.
A verificat:
Dr., conf.univ. Fiodorov I.

2017
Cuprins
Obiective ............................................................................................................................ 3
Sarcina ................................................................................................................................ 3
Descrierea lucrării .............................................................................................................. 5
Sarcina Realizată ................................................................................................................ 8
Concluzie .......................................................................................................................... 11
Anexă A(Fișierul Ex_1.m) ............................................................................................... 12
Anexă B(Fișierul Ex_2.m) ............................................................................................... 12
Anexă C(Fișierul Ex_3.m) ............................................................................................... 12
Anexă C(Fișierul Ex_3_function.m) ................................................................................ 12
Anexă D(Fișierul Ex_4.m) ............................................................................................... 12
Anexă E(Fișierul Ex_5.m)................................................................................................ 13
Anexă F(Fișierul Ex_6.m) ................................................................................................ 14
Anexă G(Fișierul Ex_7.m) ............................................................................................... 14
Anexă H(Fișierul Ex_7_function.m) ................................................................................ 15

2
Obiective
Însușirea elementelor de bază din Matlab precum: definirea unei matrice, operații cu
matrice, tipuri de date, variabile, instrucțiuni, fișiere script, reprezentarea graficelor și
implementarea funcțiilor în Matlab.
Sarcina
Exercițiu 1.1:
Fie vectorii linie a = [0, 0.1, 0.2, …, 2] și coloană b = [1 … 1]
a) Ce lungime trebuie să aibă b astefel ca să aibă sens înmulțirea (în sens matricial)
a*b? Inițializați în MATLAB cei doi vectori și realizați înmulțirea. Ce operație se
efectuează?
b) Realizați înmulțirea b*a;
c) Realizați înmulțirea element cu element a celor doi vectori. Ce resultat se obține?
Exercițiu 1.2:
Se creează un fișier nou care trebuie salvat în directorul d:/student/pns/nrgrupa.
Folosind sintaxele și indicațiile din secțiunile 1.2.6. și 1.2.7. realizați un program MATLAB
care să genereze un vector cu elemente aleatoare cu distribuție normală(gaussiană) și să
afișeze elementele negative ale acestui vector.
Exercițiu 1.3:
Realizați un program MATLAB care generează un vector cu elemente complexe.
Realizați (un alt fișier) o funcție MATLAB care avînd drept parametru de intrare vectorul
cu valori complexe, returnează ca pametri de ieșire:
- Media aritmetică a părților reale ale elementelor vectorului;
- Un vector ce conține elementele vectorului inițial ridicate la pătrat;
- O matrice oținută din înmulțirea vectorului inițial cu transpusul său.
Exercițiu 1.4:
Realizați un program MATLAB în care să generați și să reprezentați grafic folosind
funcția stem următorii vectori:
a) z = [0, 0, 0, 0, 0, 1, 0, 0, ..., 0], vectorul z avînd lungimea 21. Reprezentarea grafică
se va face în două ”miniferestre” (funcția subplot), vectorul z în funcție de n = 0:20
respectiv de m = -5:15;
b) t = |10 – n|, reprezentat grafic în funcție de n = 0:20.

c) cele două secvențe vor fi


reprezentate în:
a. Figura 1 – în același sistem de coordonate (pe același grafic);
b. Figura 2 – folosind două ”miniferestre” grafice plasate una sub alta.

3
Reprezentați cele două figuri folosind comanda plot iar apoi încercați reprezentarea
lor folosind comanda stem.
Exercițiu 1.5:
a) Modificați pasul de cariație a variabilei t la 0.01 și apoi la 0.0002. Comentați
diferențele;
b) Măsurați pe grafic perioda semnalului sinusoidal în cele 3 situații;
c) Generați un semnal cosinusoidal de frecvență 20Hz pe care să-l reprezentați cu
culoare roșie pe același grafic peste semnalul sinusoidal.
Exercițiu 1.6:
Să se genereze vectorul x conținînd vaorile 1, 2, 3, ..., 99, 100 și vectorul y având
valorile 2, 4, 6, 8, ..., 198, 200.
a) Să se reprezinte grafic y în funcție de x folosind funcția stem;
b) Să se reprezinte grafic y în funcție de x folosind funcția plot;
c) Să se reprezinte grafic în aceeași figură, în același sistem de coordonate, y în
funcție de x folosind funcțiile plot și stem(se vor folosi culori diferite);
d) Să se reprezinte grafic în aceeași figură, în sisteme de coordonate diferite, y în
funcție de x folosind funcția plot și y în funcție de x folosind uncția stem.
Exercițiu 1.7:
1. Fie f o funcție reală de o variabilă, precizată de următorii vectori:
X = [-2 -1.5 0 0.5 2.5 3];
Y = [6 9 11 10 7 5].
Să se aproximeze derivata de ordinul I a funcției f în punctele:
a) -2, 0 și 2.5, folosind diferențe progresive;
b) -1.5, 0 și 3, folosind diferențe regresive;
c) -0.75, 0.25, 0.5 și 1, folosind diferențe centrate.
Să se reprezinte grafic în aceeași fereastră grafică derivata de ordinul I a funcției
f, obținută prin aproximare cu cele trei tipuri de diferențe finite.
2. Fie funcția polinomială
a) Să se calculeze derivate funcției f pentru valorile -2, -1.3, 0.1 și 2.45;
b) Să se reprezinte graphic derivate funcției f pe intervalul [-2, 3];

4
Descrierea lucrării
Pentru efectuarea exercițiului 1.1 au fost folosite cîteva operații împreună cu unele
funcții standarde din Matlab. Toate comenzile folosite pentru rezolvarea condițiilor din
exercițiul 1.1 au fost incluse într-un fișier program cu denimirea Ex_1.m, conținutul acestui
fișier este reprezentat în figura 1.

Figura 1 – Comenzile pentru rezolvarea exercițiilor de la punctul 1.1


După cum vedem din figura 1 au fost folosite două funcții din Matlab, acestea sunt
ones și disp. Prima funcție permite să creem matrici sau vectori cu toate elementele avînd
valoarea 1. Cea dea doua funcție se folosește pentru afișarea unui string sau a altor valori,
precum vectori și matrici.
Următorul exercițiu din saricini este cu număru 1.2, la fel ca și exercițiul 1.1 toate
comenzile pentru rezolvarea acestui exercițiu au fost include într-un fișier cu etensia .m.
Conținutul acestui fișier este reprezentat în figura 2.

Figura 2 – Comenzile folosite pentru realizarea exercițiului 1.2


Pentru realizarea exercițiului 1.3 au fost create două fișiere cu extensia .m, în primul
fișier a fost creată o metodă care permite să primim un vector ca parametru și să returnăm
rezultatele conform condiției primite. Al doilea fișier crează vectorul și apelează funcția
creată după care primește rezultatele din această funcție și le afișează în într-o formă mai
simplă. Corpul metodei create este reprezentat în figura 3.

Figura 3 – Funcția pentru realizarea condițiilor exercițiului 1.3

5
Conținutul celui de-al doilea fișier în care se creează vectorul și se afișează rezultatele
primite din funcția creată este reprezentat în figura 4.

Figura 4 – Fisierul sursă care folosește funcția creată anterior


În exercițiul 1.4 a fost capatate deprinderi pentru crearea graficilor, pentru aceasta la
fel ca și în cazurile precedente a fost creat un fișier sursă în care au fost incluse toate
comenzile pentru realizarea tuturor subpunctelor din exercițiul 1.4. Codul sursă al fișierului
este reprezentat în figura 5.

Figura 5 – O parte a fișierului sursă pentru rezolvarea exercițiilor 1.4


În figura 5 nu a fost reprezentat toate comenzile și funcțiile care au fost folosite pentru
realizarea sarcinilor 1.4, însă codul în întregime va fi inclus în anexă. După cum am
observat din figura 5 pentru construirea graficelor a fost folosită funcția stem și funcția plot,
iar pentru a plasa mai multe grafice în aceeași fereastră a fost folosită funcția subplot. Pe
lîngă funcțiile enumerate, am mai folosit funcția figure împreună cu comanda hold on
pentru a avea posibilitatea de a plasa mai multe grafice în aceeași fereastră în același sistem
de coordonate.

6
În următorul exercițiu din sarcină au fost desenate graficile unui semnal sinusoidal și
unui cosinusoidal, aceasta înseamnă că a fost desenat niște grfice dependente de timp.
Pentru a desena aceste grafice a fost folosită funcția plot. Rezolvarea subpunctelor din
exercițiul 1.5 a fost incluse într-un foșier sursă, conținutul parțial al acestui fișier este
reprezentat în figura 6.

Figura 6 – Comenzile folosite pentru rezolvarea exercițiului 1.5


În figura 6 se poate observa o funcție nouă care nu a fost folosită pînă la momentul
actual, această funcție este xlabel care ne permite să indicăm un text care va fi plasat sub
axa X pe graficul funcției. Încă un moment interesant este faptul că în funcția plot a fost
folosit al treilea parametru care conține două caractere, punctul indică ce caracter se va afișa
pe grafic în locurile unde funcția e calculată pentru acele puncte iar al doilea caracter
reprezintă simbolul care se va trasa de la un punct calculat la altul, dacă un asemenea
caracter nu va fi indicat și s-ar lăsa doar punctul în acest caz graficul sinusoidei noastre ar
fi compus din puncte doar, ar arăta ca linii punctate.
Rezolvarea exercițiului 1.6 nu prezintă mare interes pentru că la rezolvarea acestuia
nu au fost folosite funcții sau setări care nu au fost folosite anterior, din cauza aceasta
rezolvarea exercițiului dat nu va fi descrisă dar va fi inclus codul sursă în anexă.
Ultimul exercițiu din sarcină este 1.7, el este bazat pe construirea graficilor funcțiilor
derivate(diferențe regresive, progresive, coerente). Exercițiul dat a fost rezolvat folosind
exemplele din îndrumar, pentru aceasta au fost create două fișiere, unul reprezintă o funcție
care se folosește pentru rezolvarea funcției de integrat prin metoda Simpson dar o variantă
mai performantă. Cu acest scop în Matlab există funcția quad care primește ca parametri
numele fișierului în care este creată funcția care reprezintă funcția de integrat după care
funcția quad primește limitele de integrare a funcție și dacă avem nevoi prin ultimul
parametru putem specifica precizia de calcul.

7
Sarcina Realizată
În capitolul dat vor fi incluse print screen-urile rezultatelor rulării fiecărei rezolvări
a sarcinilor indicate la început.

Figura 7 – Rezultatul afișat la execuția fișierului Ex_1.m

Figura 8 – Rezultatul afișat la execuția fișierului Ex_2.m

Figura 9 – Rezultatul afișat la execuția fișierului Ex_3.m

8
Figura 10 – Rezultatul afișat la execuția fișierului Ex_4.m

Figura 11 – Rezultatul afișat la execuția fișierului Ex_5.m

Figura 12 – Rezultatul afișat la execuția fișierului Ex_6.m


9
Figura 13 – Rezultatul afișat la execuția fișierului Ex_7.m

Figura 14 – Rezultatul afișat la execuția fișierului Ex_7.m(calculele)

10
Concluzie
În acest laborator au fost căpătate deprinderi în lucrul cu MATLAB, cu acest scop au
fost îndeplinite un șir de sarcini, folosind instrumentele care le pune la dispoziția
utilizatorului mediul MATLAB.
Primul lucru care a fost studiat în acest laborator este definirea vectorilor și matricilor,
pe lîngă aceasta au fost efectuate operații cu aceste structuri de date. Un aspect foarte
important al mediului MATLAB este faptul că acesta permite crearea unor fișiere cu
extensia .m care permit o anumită parte a comenzilor care le scrim să le scrim deoparte și
atunci cînd avem nevoie, să le apelăm doar indicînd denumirea fișierului în care acestea se
află. De asemenea trebuie de menționat că MATLAB propune o multitudine de funcții care
permit crearea graficilor unor funcții, aceste funcții ne permit să construim graficele cu setări
proprii sau cu setări implicite.
În final putem spune că MATLAB este un instrument foarte puternic în lucrul cu
calculele matematice și ne permite să ușurăm lucrul cu diverse tipuri de operații din
matematică.

11
Anexă A(Fișierul Ex_1.m)
format short;
a = 0:0.1:2;
b = ones(length(a), 1);
disp('a * b');
a * b
disp('b * a');
b * a
disp('Inmuultirea element cu element(a .* b)');
a .* b

Anexă B(Fișierul Ex_2.m)


format short
format COMPACT
V = randn(1, 10);
for i = 1:1:length(V)
if V(i) < 0
disp(V(i));
end
end

Anexă C(Fișierul Ex_3.m)


format compact
format short
realPart = randn(5, 1);
imagPart = randn(5, 1);
c = complex(realPart, imagPart);
[Average, VectorDegree, MultipliedVectors] = Ex_3_function(c);
disp('Media aritmetica:')
disp(Average)
disp('Elementele vectorului ridicate la puterea a 2:')
disp(VectorDegree)
disp('Matricea obtinuta prin inmultirea vectorului cu transpusul sau:')
disp(MultipliedVectors)

Anexă C(Fișierul Ex_3_function.m)


function [RealAvg, DegreeVector, ProdMatrix] = Ex_3_function(v)
RealAvg = mean(real(v));
DegreeVector = pow2(v);
ProdMatrix = v * v';

Anexă D(Fișierul Ex_4.m)


format compact
format short
z = zeros(1, 21);
for i = 6:6:length(z)
z(i) = 1;
end
figure(1);
subplot(2, 1, 1);
n = 0:20;
stem(n, z);

12
subplot(2, 1, 2);
m = -5:15;
stem(m, z);

t = abs(10 - n);
figure(2);
stem(n, t);

n1 = -15:25;
x1 = sin(pi / 17 * n1);
n2 = 0:50;
x2 = cos(pi / sqrt(23) * n2);
figure(3);
stem(n1, x1);
hold on
stem(n2, x2);
figure(4);
subplot(2, 1, 1);
stem(n1, x1);
subplot(2, 1, 2);
stem(n2, x2);

figure(5);
plot(n1, x1);
hold on
plot(n2, x2);
figure(6);
subplot(2, 1, 1);
plot(n1, x1);
subplot(2, 1, 2);
plot(n2, x2);

Anexă E(Fișierul Ex_5.m)


F = 50;

t = 0:0.001:0.2;
s = 2 * sin(2 * pi * F * t);
figure(1);
plot(t, s, '.-');
xlabel('Timp [s]');
grid;

t = 0:0.01:0.2;
s = 2 * sin(2 * pi * F * t);
figure(2);
plot(t, s, '.-');
xlabel('Timp [s]');
grid;

figure(3);
t = 0:0.0002:0.2;
s = 2 * sin(2 * pi * F * t);
hold on;
plot(t, s, '.-');
xlabel('Timp [s]');
grid;

figure(3);
F = 20;

13
s = 2 * cos(2 * pi * F * t);
plot(t, s, 'r.-');

Anexă F(Fișierul Ex_6.m)


x = 1:100;
y = 2:2:200;

figure(1);
stem(x, y);
figure(2);
plot(x, y);

figure(3);
plot(x, y, 'r');
hold on;
stem(x, y, 'b');

figure(4);
plot(x, y, 'r');
axis([-50 49 -100 99]);
hold on;
stem(x, y, 'b');
axis([0 99 -50 150]);

Anexă G(Fișierul Ex_7.m)


x = [-2 -1.5 0 0.5 2.5 3];
y = [6 9 11 10 7 5];
%diferente progresive
df = diff(y) ./ diff(x);
vx = [-2 0 2.5];
disp('Diferente progresive');
for i = 1:length(vx)
k = find(x == vx(i));
disp(['f''(' num2str(vx(i)) ') = ' num2str(df(k))]);
end
n = length(x);
plot(x(1:n - 1), df);
hold on;

vx = [-1.5 0 3];
df = diff(y) ./ diff(x);
disp('Diferente regresive');
for i = 1:length(vx)
k = find(x == vx(i));
disp(['f''(' num2str(vx(i)) ') = ' num2str(df(k - 1))]);
end
n = length(x);
plot(x(2:n), df);

%-0.75 0.25 0.5 1


dx = diff(x);
dy = diff(y);
k = length(dx);
df = (dy(1:k-1)+dy(2:k)) ./ (dx(1:k-1)+dx(2:k));
vx = [0.5];
disp('Diferente centrate');
%4 - pos in vectorul x, 1 - pos in vx

14
disp(['f''(' num2str(vx(1)) ') = ' num2str(df(4))]);
vx3 = [-0.75 0.25 1];
n = length(x);
der = spline(x(2:n-1), df, vx3);
for i = 1:length(der)
disp(['f''(' num2str(vx3(i)) ') = ' num2str(der(i))]);
end
figure(1);
plot(x(2:n-1), df);
hold off;

%Punctul 2, functie polinomiala


c = [1 13 -7 1 -1];
dc = polyder(c);
vx = [-2 -1.3 0.1 2.45];
format short
disp('Functia polinomiala:');
der = polyval(dc, vx);
disp(der);
x = -2:0.1:3;
df = polyval(dc, x);
figure(2);
plot(x, df);

x = 1:11;
y = 1:11;
%Punctul 3
for j=1:11
x(j) = -1.1 + 0.1*j;
y(j) = j * x(j)^2/(x(j)-1) - 2 / (j + 1);
end
disp('Exercitiul 3:');
I = trapz(x, y)

%Punctul 4
disp('Exercitiul 4:');
I = quad('Ex_7_function', pi / 3, pi / 2)

Anexă H(Fișierul Ex_7_function.m)


function [y] = Ex_7_function(x)
y = 1 ./ (sin(x) + cos(x));

15