Sunteți pe pagina 1din 11

MINISTERUL EDUCAŢIEI AL REPUBLICII MOLDOVA

UNIVERSITATEA TEHNICĂ A MOLDOVEI


FACULTATEA CALCULATOARE, INFORMATICǍ ȘI MICROELECTRONICǍ
DEPARTAMENTUL INGINERIA SOFTWARE ȘI AUTOMATICĂ

RAPORT
Lucrarea de laborator nr. 1
Disciplina : Prelucrarea semnalelor
Tema : Semnale digitale discrite

A efectuat: st.gr. TI–171 F/r


Roșca Doinița

A verificat: dr.conf.
Romanenko Alexandru

Chișinău 2020
Scopul lucrării
Să învăţăm a generara , vizualiza şi transforma diferite tipuri de secvenţe elementare .

Mersul lucrării
Program 1_1
Destinată pentru generarea şi vizualizarea secvenţelor elementare .

% Program P1_1
% Generarea unei secvenţe de elemente
clf
% Generarea vectorului de la -8 pînă la 18
n= -8 : 18;
% Generarea secvenţelor
u=[zeros(1,8) 1 zeros(1,18)];
% Afişarea secvenţelor la ecran
stem(n,u);
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Secvenţa de elemente');
axis([-8 18 0 1.2]);

Program 1_2
Una dintre principalele tipuri de reprezentare a semnalelor discrete – secvenţa exponeţială . Astfel de tip
de secvenţă poate fi generată cu ajutorul următorilor operatori MATLAB : .^ şi exp . Programul este
destinat pentru a genera o secvenţă de numere exponenţiale definite prin numere complexe .

% Program P1_2
% Generarea secvenţelor exponenţiale complexe
clf;
c=-(1/12)+(pi/6)*i;
K=5;
n=0:30;
x=K*exp(c*n);
subplot(2,1,1);
stem(n,real(x));
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Partea reală');
subplot(2,1,2);
stem(n,imag(x));
xlabel('Timpul n');
ylabel('Amplitudinea');
title('Partea imaginara');

2
Program 1_3
Este destinat pentru a genera o secvenţă de numere exponenţiale definite real .

% Program P1_3
% Generarea de secvenţe exponenţiale reale
clf;
n=0:20;
a=1.5;
K=0.5;
x=K*a.^n;
stem(n,x);
xlabel('Timpul n');
ylabel('Amplitudinea');

Program 1_4
Este utilă o aşa clasă de semnale digitale , ca semnalele descrise printr-o sinusoidă prezentate în numere
reale . Aşa fel de semnale sinusoidale pot fi generate în MATLAB cu ajutorul operatorilor trigonometrici sin
şi cos .

% Program P1_4
% Generarea secvenţelor sinusoidale
clf;
n=0:30;
f=0.1;
phase=0;
A=3;
arg=2*pi*f*n - phase;
x=A*cos(arg);
stem(n,x); % Concluzia secvenţelor generate
axis([0 30 -4 4]);
grid;
title('Sinusoida');
xlabel('Timpul n');
ylabel('Amplitudinea');
axis;

3
Program 1_5
Un exemplu tipic de prelucrare a semnalului digital este separarea semnalului de zgomot de la semnalul
distorsionat de zgomot . Fie s[n] – semnal distorsionat de un zgomot aliatoriu d[n] şi ca urmare redarea unui
semnal x[n]=s[n] + d[n] . Obiectivul principal – convertirea semnalului x[n] astfel , pentru a primi y[n] care
va fi maximal cît mai aproape de semnalul original s[n] . Cel mai simplu algorimt-mediu : y[n] = ⅓(x[n-1]
+ x[n] = x[n+1]) , ceea ce execută programul de mai jos .

% Program P1_5
% Îndreptarea semnalului prin mediere
clf;
R=31;
d=0.7*(rand(R,1)-0.3); % Generarea zgomotului aleatoriu
m=0:R-1;
s=2*m.*(0.6.^m); % Generarea semnalului curat
x=s+d'; % Generarea semnalului distorsionat de zgomot
subplot(2,1,1);
plot(m,d','r-',m, s,'g--',m, x,'b-.');
xlabel('Timpul n');
ylabel('Amplitudinea');
legend('d[n] ','s[n] ','x[n] ');
x1=[0 0 x]; x2=[0 x 0]; x3=[x 0 0];
y=(x1+x2+x3)/3;
subplot(2,1,2);
plot(m,y(2:R+1),'r-',m,s,'g--');
legend('y[n] ','s[n] ');
xlabel('Timpul n');
ylabel('Amplitudinea');

Distribuții de probabilitate
În teoria probabilităților și statistică , distribuția de probabilitate ( repartiția ) descrie  probabilitatea  val-
orilor uneia sau mai multor variabile aleatoare .
În cazul variabilelor discrete , distribuția identifică valorile și probabilitatea fiecărei valori . Pentru vari-
abilele continue , distribuția identifică valorile posibile și probabilitatea intervalelor de valori .

Distribuția binominală

În teoria probabilităților și statistică distribuția binomială este o distribuție de probabilitate discretă


reprezentând numărul de succese într-o secvență
de n încercări Bernoulli ( experimente da/nu ) cu
probabilitate de success p .

4
Distribuția Gauss

Densitatea de repartiție

Media :

Dispersia :

Entropia :

Distribuția Rayleigh

În statistică și teoria probabilităților , distribuția Rayleigh este o distribuție de probabilitate continuă . Ea


poate apărea când un vector bidimensional (cum ar fi viteza vântului , care constă din modul și direcție) are
elemente ce sunt într-o distribuție normală , necorelate , și cu varianță egală . Modulul vectorului va avea în
acest caz o distribuție Rayleigh .
Ea poate apărea și în cazul numerelor complexe aleatoare ale căror părți reale și imaginare sunt variabile
aleatoare independente și identic distribuite , cu o distribuție gaussiană . În acest caz , valoarea absolută a
numărului complex are o distribuție Rayleigh . Distribuția și-a luat numele de la lordul Rayleigh .
Densitatea de probabilitate Rayleigh este definită de formula :

Graficul distribuției de probabilitate Rayleigh

5
Exemplul 1 .
Să se creeze din 350 eşantioane o oscilaţie armonică cu amplitudinea unitate şi perioada de 35
eşantioane .

clf;
k=0:350;
x=sin(2*pi*k/35);
plot(x);
grid on;
title('sinusoida');
xlabel('numărul eşantion');
ylabel('Amplitudine')

Prima comandă creează vectorul k=[0,l,...255] .


Următoarea comandă generează vectorul x care
conţine mărimea eşantioanelor oscilaţiei
sinusoidale la un număr corespunzător k .
Comanda plot împreună cu comenzile următoare
afişează graficul oscilaţiei formate sub forma unui semnal continuu şi nu a unei succesiuni de
eşantioane discrete datorită unirii eşantioanelor vecine cu segmente de dreaptă . Dacă ar fi fost
necesară prezentarea graficului sub forma de eşantioane discrete , atunci în loc de comanda plot
trebuie de folosit comanda stem .

Exemplul 2 .
Să se creeze un semnal ce conţine 1024 eşantioane a unui proces tranzitoriu a unui sistem
oarecare, descris de următoarea relaţie :
Intervalul de timp între eşantioanele vecine T=0,002s . Formarea unui aşa tip de semnal este
posibilă cu ajutorul următoarei serii de comenzi :

clf;
t=0:0.001:1.023;
T=0.002;
k=101:1024;
Z=zeros(1,100);
x=[Z exp(-(k*T-0.1)/0.2).*sin(2*pi*(k*T-0.1)/
0.16)];
plot(t,x);
grid on;
title('Proces tranzitoriu');
xlabel('Time(s)');
ylabel('Amplitudine');

Prima comandă generează vectorul valorilor


argumentelor timpului care conţine 1024 de elemente: 0, 0.001, 0.002, ...1.023 . În rândul al
treilea se instalează vectorul k din 924 de numere ale eşantioanelor în domeniul de timp unde
x(t)≠0 . Vectorul [X k ] se creează prin unirea (concatenarea) vectorului [Z k ] ce conţine 100 de
eşantioane nule , creat cu comanda a patra şi vectorul valorilor nenule ale eşantioanelor X(t)
calculate în corespundere cu relaţia dată x(t) . Aducem aminte că operatorul ".*" este operatorul
înmulţirii element cu element a vectorilor "sin" şi "exp" . Comanda plot are aici două argumente
arătând că se construieşte graficul x funcţie de l .

6
Exemplul 3 .
Să se creeze un semnal în intervalul de timp 0≤t≤1s care constă din suma unei oscilaţii
armonice cu amplitudinea de 1 V şi frecvenţa 35Hz , unei oscilaţii sinusoidale cu amplitudinea de
2V şi frecvenţa de 120Hz şi a unui semnal de zgomot distribuit normal cu valoarea medie zero şi
valoarea medie pătratică 0.5V , folosind o frecvenţă de discretizare de 1000Hz , adică intervalul
de discretizare T=0.003s .
Setul de comenzi necesar pentru crearea unui astfel de semnal are forma :

t=0:0.003:1;
y=sin(2*pi*50*t)+2*sin(2*pi*120*t);
randn('state',0);
yn=y+0.5*randn(size(t));
plot(t(1:35), yn(1:35));
grid

Conform comenzii plot pe ecran sunt afişate


primele 35 de eşantioane ale semnalului .

Exemplul 4 .
Să se creeze în intervalul 0≤t≤ls semnale exponenţiale de forma: a) 5exp(-6t); b) exp(5t),
folosind frecvenţa eşantioanelor f d =1000Hz .

a) clf;
B=4;
a=6;
t=0:0.003:1;
x=B*exp(-a*t);
plot(t,x), grid

b) clf;
B=3;
a=7;
t=0:0.003:1;
x=B*exp(a*t);
plot(t,x), grid

7
Exemplul 5 .
Să se creeze un impuls exponenţial discret de forma x(n)=Br n , unde B=5, r=0.4 pe intervalul - 1 0 ≤ n ≤ 1 0 .

B=5;
r=0.4;
n=-10:10;
x=B*r.^n;
stem(n,x)

Observăm că, operatorul ".^" înseamnă ridicarea la


putere element cu element, iar comanda stem reprezintă
graficul sub forma unei serii de valori discrete, şi nu un
semnal continuu ca la comanda plot .

Exemplul 6 .
Să se creeze un semnal sinusoidal discret cu perioada de 20 eşantioane şi amplitudinea d e 3V :
, -10≤n≤10

A=3;
omega=2*pi/20;
n=-10:10;
y=A*sin(omega*n);
stem(n,y)

Exemplul 7 .
Să se creeze un semnal discret exponenţial atenuat , pe baza înmulţirii exponentei atenuatoare
formate în exemplul 5 şi a semnalului sinusoidal creat în exemplul 6 , ambele primitei pentru
intervalul -10≤n ≤10 .
B=5;
r=0.4;
n=-10:10;
x=B*r.^n;
stem(n,x)

A=3;
omega=2*pi/20;
n=-10:10;
y=A*sin(omega*n);
stem(n,y),

Z=x.*y;
stem(n,Z)

8
Exemplul 8.
Să se creeze următoarele serii de impulsuri δ, care se descriu, după cum se ştie, de relaţia:

a) x 1 =2δ(k-3), 1 ≤ k ≤ 1 0 ;

k=1:10;
x1=zeros(size(k));
x1(3)=4;
figure;
stem(k,x1);
grid;
xlabel('k');
ylabel('xl(k)')

b) x 2 =0.6δ(k), -10≤ k ≤ 10 ;

k=-10:10;
x2=zeros(size(k));
x2(11)=0.8;
figure;
stem(k,x2);
grid;
xlabel('k');
ylabel('x2(k)')

c) x 3 =1.5δ(k+7), -10≤ k ≤ 0

k=-10:0;
x3=zeros(size(k));
x3(4)=1.7;
figure;
stem(k,x3);
grid;
xlabel('k');
ylabel('x3(k)')

9
Exemplul 9 .
Crearea impulsului dreptunghiular de amplitudine unitate şi durata 1s , amplasat simetric în
originea de coordonate t=0 (-0.5s≤ t ≤ 0 . 5 s ) descris în intervalul dc timp -1s≤ t ≤ 1 s cu pasul
T=4ms .

t=-1:0.004:1;
U1=[zeros(1,250), ones(1,751)];
U2=[zeros(1,751), ones(1,250)];
U=U1-U2;
plot(t, U),
grid

Exemplul 10.
Crearea unui şir discret de impulsuri dreptunghiulare cu amplitudinea A=2 şi viteza
unghiulară ω=π/4 în intervalul. - 1 0 ≤ n ≤ 1 0 se efectuează cu ajutorul următoarelor comenzi:

A=2;
omega=pi/4;
rho=0.6; %parametrul rho determina partea perioadei in care semnalul e pozitiv
n= -10:10;
x=A*square(omega*n*rho);
stem(n,x)
grid

Exemplul 11.
Crearea semnalului exponenţial complex.

n=0:20;
x=exp(j*n/3);
subplot(2,1,1);
stem(n,real(x));
title('real part');
xlabel('index(n)');
subplot(2,1,2);
stem(n,imag(x));
title('imag part');
xlabel('index(n)')

10
Exemplul 12.
Crearea semnalului exponenţial complex x( n ) = exp((-0.1+j0.3)n) pe intervalul -
10≤ n ≤ 10:

n=[-10:1:10];
alpha=-0.1+0.3j;
x=exp(alpha*n);
subplot(2,2,1);
stem(n,real(x));
title('real part');
xlabel('n');
grid
subplot(2,2,2);
stem(n,imag(x));
title('imaginare part');
grid
xlabel('n');
subplot(2,2,3);
stem(n,abs(x));
title('magnitudine');
xlabel('n');grid
subplot(2,2,4);
stem(n,(180/pi)*angle(x));
title('phase');
xlabel('n')
grid

Concluzie
În urma efectuării acestui laborator am învățat a genera , vizualiza și transforma diferite tipuri de
secvențe elementare folosind MATLAB și funcțiile specifice ale acestuia , generând grafice și vizualizându-
le .
Am întărit cunoștințele acumulate la orele de teorie prin analiza și efectuarea problemelor în MATLAB .
Am studiat principiile de prelucrare a semnalelor digitale . Am făcut cunoștință cu calculele matematice
principale care stau la baza teoriei de prelucrare a semnalelor digitale , am utilizat operațiile de bază
efectuate asupra semnalelor în procesul lor de prelucrare .

11

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