Sunteți pe pagina 1din 19

Ministerul Educaţiei, Culturii și Cercetării al Republicii Moldova

Universitatea Tehnică a Moldovei


Departamentul Ingineria Software și Automatică

RAPORT
Lucrare de laborator Nr.1
Disciplina: Prelucrarea Semnalelor
Tema: Introducere în MatLab

A efectuat: st.gr. TI-192,


Mereuță Ana

A verificat : asist.univ.
Dubac Serghei

Chișinău 2021
Scopul lucrării:

Sarcina 1: Fie vectorii linie a = [0, 0.1, 0.2, … , 2] şi coloană b = [ 1 ⋮ 1 ]


a) Ce lungime trebuie să aibă b astfel, încât să aibă sens înmulţirea (în sens matricial) a*b?
Iniţializaţi în MATLAB cei doi vectori şi efectuați înmulţirea.
b) Efectuați înmulţirea b*a.
Vectorul b trebuie să aibă lungimea 21( nr de coloane al vectorului a).
a=0:0.1:2
b=[1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1]
b*a

Fig. 1 Rezultatul obținut la înmulțirea b*a

Sarcina 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, elaboraț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.

Listing-ul:
a = randn(1,5)
for i=1:1:5
if a(1,i) < 0
a (1,i)
end
end
Fig. 2 Rezultatul execuției

Sarcina 3: Elaborați un program MATLAB care generază un vector cu elemente complexe.


Elaborați (un alt fişier) o funcţie MATLAB care, având drept parametru de intrare vectorul
cu valori complexe, returnează ca parametri 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 obţinută din înmulţirea vectorului iniţial cu transpusul său.
Listing-ul programului:
a = randn (1, 5)
b = randn (1, 5)
complex_m= complex(a, b)

Fig. 3 Vectorul obținut

Listing-ul funcției:
function [ ] = complex_rez (complex_m)
%ex 3 a
r =real(complex_m);
im = imag(complex_m);
m=mean(r)

%ex 3 b
r_b= r.^2
im_b= im.^2

%ex 3 c
complexmatrix1= diag(diag(complex_m));

complexmatrixfinal= complex_m * complexmatrix1

end

Fig. 4 Rezultatele obținute


Sarcina 4: Elaboraț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) x 1=sin ( 17π n),−15 ≤n ≤ 25 și x =cos ( √π23 n), 0 ≤ n ≤50


2
Cele două secvenţe vor fi reprezentate:
i) în figura 1 – în acelaşi sistem de coordonate (pe acelaşi grafic);
ii) în figura 2 – folosind două “miniferestre” grafice plasate una sub alta.
Reprezentaţi cele două figure, folosind comanda plot, apoi încercaţi reprezentarea lor,
folosind comanda stem.
m=0:20;
n=-5:15;
z = zeros(21);
for i = 6:6:21
z(i) = 1;
end
subplot(2, 1, 1)
stem(n, z), grid
subplot(2, 1, 2)
stem(m, z), grid

n=0:20;
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)
plot(n1,x1,'b',n2,x2,'r')
figure(4)
subplot(2,1,1)
plot(n1,x1)
subplot(2,1,2)
plot(n2,x2)

figure(5)
stem(n1,x1)
hold on
stem(n2,x2)
hold off
figure(6)
subplot(2,1,1)
stem(n1,x1)
subplot(2,1,2)
stem(n2,x2)
Fig. 5 Reprezentarea grafică a vectorului utilizând comanda subplot

Fig. 6 reprezentarea în funcție de n= 0:20


Fig. 7 Reprezentarea grafică în același sistem de coordonate

Fig. 8 Reprezentarea grafică utilizând 2 miniferestre, utilizând subplot


Fig. 9 Reprezentarea în aceași sistem de coordonate, utilizând stem

Fig. 10 reprezentarea grafică în același sistem de coordonate, utilizând comanda stem

Sarcina 5: 1) Modificaţi pasul de variaţie a variabilei t la 0.01, apoi la 0.0002.


2) Măsuraţi pe grafic perioada semnalului sinusoidal în cele 3 situaţii;
3) Generaţi un semnal cosinusoidal de frecvenţă 20 Hz pe care să-l reprezentaţi cu
culoare roşie pe acelaşi grafic peste semnalul sinusoidal.
Listing-ul:
F=50;
t=0:0.001: 0.2;
s=2*sin(2*pi*F*t);
plot(t, s, '.-'), xlabel('Timp, s'), grid

Fig. 11
F=50;
t=0:0.01: 0.2;
s=2*sin(2*pi*F*t);
plot(t, s, '.-'), xlabel('Timp, s'), grid
Fig. 12
F=50;
t=0:0.0002: 0.2;
s=2*sin(2*pi*F*t);
plot(t, s, '.-'), xlabel('Timp, s'), grid
Fig. 13
F=50;
F2=20;
t=0:0.0002: 0.2;
s=2*sin(2*pi*F*t);
c=2*cos(2*pi*F*t);
plot(t, s, '.-'), xlabel('Timp, s'), grid
hold on
plot(t, c, '.-'), xlabel('Timp, s'), grid

Fig. 14

Sarcina 6: Să se genereze vectorul x conținând valorile 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 funcția stem.
Listng-ul programului:
x=1:100;
y=2:2:200;
stem(x,y);

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

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

figure(4);
stem(x,y);
hold on;
plot(x,y);
axis([-10 100 -5 200])

Fig. 15
Fig. 16

Fig. 17
Fig. 18

Sarcina 7: 1. Fie f o funcţie reală de o variabilă reală, 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ă f : R → R , f ( x ) =x 4 +13 ∙ x 3−7 ∙ x 2+ x−1
a) Să se calculaze derivata funcţiei f pentru valorile -2, -1.3, 0.1 şi 2.45.
b) Să se reprezinte grafic derivata funcţiei f pe intervalul [-2,3].
π

3. Să se calculeze ∫ f ( x ) dx , unde funcția f este data prin relațiile:


0

j ∙ x 2j 2
f ( x j )= − , x =−1.1+0.1∙ j, j=1,2, … , 11.
x j−1 j +1 j
π /2

4. Să se calculeze integrala ∫ sin ( x )+1cos ⁡(x ) dx


π /3

Listing-ul programului (1 a)
x= [-2, -1.5, 0, 0.5, 2.5, 3];
y= [6, 9, 11, 10, 7, 5];

df=diff(y)./diff(x);
vx1= [-2, 0, 2.5];
for i=1:1:length(vx1)
k=find(x==vx1(i));
disp(['f''(' num2str(vx1(i)) ')=' num2str(df(k))])
end

Fig. 19 Rezultate obținute


Listing-ul programului (1 b)
x= [-2, -1.5, 0, 0.5, 2.5, 3];
y= [6, 9, 11, 10, 7, 5];

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

Fig. 20 Rezultatele obținute


Listing-ul programului (7 c)
x= [-2, -1.5, 0, 0.5, 2.5, 3];
y= [6, 9, 11, 10, 7, 5];

dx=diff(x);
dy=diff(y);
k=length(dx);
df=(dy(1:k-1)+dy(2:k))./(dx(1:k-1) +dx(2:k));
vx1= [-0.75, 0.25, 0.5, 1];
for i=1:1:length(vx1)
k=find(x==vx1(i));
disp(['f''(' num2str(vx1(i)) ')=' num2str(df(k))])
end

Fig. 21 Rezultatele obținute


x= [-2, -1.5, 0, 0.5, 2.5, 3];
y= [6, 9, 11, 10, 7, 5];

dfa=diff(y)./diff(x);
vxa1= [-2, 0, 2.5];
for i=1:1:length(vxa1)
k=find(x==vxa1(i));
disp(['f''(' num2str(vxa1(i)) ')=' num2str(dfa(k))])
end
dfb=diff(y)./diff(x);
vxb1= [-1.5, 0, 3];
for i=1:1:length(vxb1)
k=find(x==vxb1(i));
disp(['f''(' num2str(vxb1(i)) ')=' num2str(dfb(k-1))])
end
dxc=diff(x);
dyc=diff(y);
k=length(dxc);
dfc=(dyc(1:k-1)+dyc(2:k))./(dxc(1:k-1) +dxc(2:k));
vxc1= [-0.75, 0.25, 0.5, 1];
for i=1:1:length(vxc1)
k=find(x==vxc1(i));
disp(['f''(' num2str(vxc1(i)) ')=' num2str(dfc(k))])
end
subplot(2,2,1)
plot(dfa), xlabel('diferente progresive')
subplot(2,2,2)
plot(dfb), xlabel ('diferente regresive')
subplot(2,2,3)
plot(dfc) , xlabel('diferente centrate')
Fig. 22 Reprezentarea grafica

Listing-ul programului (2 a)
coeficienti= [1, 13, -7, 1, -1];
dcoef= polyder(coeficienti);
vx= [-2, -1.3, 0.1, 2.45];
derivat=polyval(dcoef, vx)
x=-2:0.2:3;
df=polyval(dcoef, x);
plot(x, df)
Fig.23

Fig. 24
Listing-ul programului:
x=1:11;
y=1:11;
for j=1:11
x(j) = (-1.1 + 0.1*j);
y(j) = (((j * x(j)^2)/((x(j)-1))) - (2 / (j+1)));
end

Integ1= trapz(x,y);
disp([num2str(Integ1)]);

Fig. 25

function y=f(x)
y=1./(sin(x)+cos(x));
Fig. 26

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