Sunteți pe pagina 1din 15

Universitatea Tehnica a Moldovei

Catedra Microelectronica,
si Inginerie Biomedicala

RAPORT
La PSI
Laborator 6
Tema : Analiza domeniului de frecvena a semnalelor folosind MATLAB

Verificat Executat
conf. univ. st. gr. MN-141
Railean Sergiu Pocropivnii Anatol

________________________ ________________________
(semnatura) (semnatura)

Chisinau 2016
Scopul lucrrii: Analiza domeniului de frecven a semnalului Sinusoidal folosind MATLAB.
Noiuni teoretice.

La discretizarea semnalului continuu f(t) n orice T secunde obtinem o consecutivitate de valori ale
semnalului original : fk=f(kT).
Notarea vectorului n MATLAB se ncepe cu 1 : x(1), x(2) .. Notarea semnalelor de obicei
starteaz cu zero g0, g1, , ct i co orice alt valoare, inclusiv negativ h-2, h-1, h0 . Dac
semnalele g i h conin cte 10 valori, atunci vectorii corespunztori vor conine de asemenea 10 valori
: vectorul kg va conine valorile de la 0 .. 9 iar vectorul kh va conine valorile 2 .. 7.
Domeniul de frecven a semnalelor poate fi reprezentat prin valori complexe care reprezint
sinusoidele ce fac parte din semnal.
Algoritmul Transformrii Fourier Discrete (TFD) se folosete pentru a transforma semnalul digital
din domeniul de timp ntr-un set de puncte n domeniul de frecven. Intrarea algoritmului TFD este
un set de N valori din dimeniul de timp [fk] : algoritmul modeleaz un set de N valori complexe [F k]
care reprezint informaia despre domeniul de frecven. Dac N este un numr cu baza 2 (N=2M)
atunci se folosete Transformarea Fourier Rapid (TFR).

Fie c un semnal digital a fost discretizat la orice T secunde, sau avem 1/T probe pe secund.
Alegerea vitezei de quantizare se efectuiaz n aa fel ca s fie eliminat suprapunerea, problem ce
apare cnd discretizarea e prea lent. Pentru a inltura aceast problem discretizarea se efectuiaz cu
o vitez mai mare dect dublul frecvenei a fiecrui semnal sinusoidal. Dac avem un semnal ce
comine dou sinusoide cu frecvena 10 i respectiv 35 Hz, discretizarea se efectuiaz la o fracven mai
mare dect 70 Hz. Frecvena Nyquist este egal cu jumtate din frecvena de quantizare i reprezint
limita de sus a frecvenei care trebuie s se conin n semnalul digital.
Funcia MATLAB care transformarea TFD este fft. Aceast funcie poate fi folosit cu un sau cu
dou argumente la ntrare. Dac se folosete un singur argument care este un vector ce conine un
semnal n timp, ieirea acestei funcii va fi un alt vector de acela tip ce conine valori complexe care
reprezint coninutul de frecven a semnalului. Dac se folosesc dou argumente primul este un
vector ce conine semnalul n timp, iar al doilea argument este o valoare integr L care specific
numrul de puncte a vectorului de ieire. Dac L > N atunci L-N zerouri vor fi aplicate la sfritul
semnalului n timp nainte de procesul de transformare. Dac L < N, atunci primele L valori ale
semnalului n timp vor fi folosite pentru transformare n domeniul de frecven.
Valorile domeniului de frecven prin folosire fft corespund frecvenelor separate cu 1/NT Hz.
Dac avem 32 de probe a semnalului n timp care a fost discretizat cu frecvena de 1000 Hz, valorile
frecvenei transformate prin fft corespund : 0 Hz, 1/0.032 Hz, 2/0.032 Hz .Aceste valori snt 0 Hz,
31.25 Hz , 62.5 Hz . Frecvena Nyquist este egal cu 1/2T i va corespunde cu F 16 . Deci, TFD este o
funcie periodic i valorile frecvenei mai mari dect frecvena Nyquist nu reprezint informaie nou,
1.1 Generai un semnal discret, care conine 64 de probe. Pentru aceasta culegei :

N=64;
T=1/128;
k=0:N-1;
f=sin(2*pi*20*k*T);
plot(k,f),grid, set (gca,'FontName', ...
'Arial Cyr','FontSize',16)
xlabel('Indecsul k'); ylabel('Y(t)')
title('Semnalul original ')

1.2. Pentru a determina Fk care corespunde frecvenei 20 Hz se modeleaz creterea n Hz dintre


punctele din domeniul de frecven care este 1/NT sau 2 Hz. . Acum componenta cu 20 Hz va aprea la
F10

N=64;
T=1/128;
k=0:N-1;
f=sin(2*pi*108*k*T);
F=fft(f);
magF= abs(F);
plot(k,magF) ,grid, set (gca,'FontName', ...
'Arial Cyr','FontSize',16)
xlabel('Indecsul k'); ylabel('Modulul')
title('fft a semnalul original ')
Figura 2 graficele pentru 108Hz
Figura 3 graficele pentru 10Hz

Figura 4 graficele pentru 30 Hz


Figura 5 graficele pentru 80 Hz

Figura 6 graficele pentru 120 Hz


1.3 In genere se recomand de a desena numai jumtate din valorile modulului . De Asemenea
este mai convenabil de a prezenta axa x n Hz fa de indicele k. Pentru aceasta culegei programa :

N=64;
T=1/128;
k=0:N-1;
f=sin(2*pi*40*k*T);
F=fft(f);
magF= abs(F);
hertz=k*(1/(N*T));
plot(hertz(1:N/2),magF(1:N/2)) ,grid, ...
set (gca,'FontName','Arial Cyr','FontSize',16)
xlabel('Frecven?a Hz'); ylabel('Modulul')
title('fft a semnalul original ')

1.4 S presupunem c frecvena sinusoide era de 19 Hz (n loc de 20) . Pasul de cretere a valorilor
Fk n Hz este de 2 Hz, deci sinusoida va aprea la Fk unde k=9.5. ns k este integr i nu sunt valori la F9.5.
n acest caz sinusoida va apra la valorile vecine F9 i F10. Pentru a ilustra aceasta, culegei:

N=64;
T=1/128;
k=0:N-1;
f=sin(2*pi*19*k*T);
F=fft(f);
magF= abs(F);
hertz=k*(1/(N*T));
plot(hertz(1:N/2),magF(1:N/2)), grid, set (gca,'FontName',...
'Arial Cyr','FontSize',16)
xlabel('Frecven?a Hz'); ylabel('Modulul')
title('fft a semnalul original ')
2.1 Creai un semnal dup cum urmeaz:

t = (0:1/99:1); % Vectorul de timp


x = sin(2*pi*15*t) + sin(2*pi*40*t); % Semnalul
% determinarea DFT, magnituda ?i faza secven?ei x
y = fft(x); % Modelarea DFT
m = abs(y); p = unwrap(angle(y)); % Magnituda ?i faza
% afi?area magnitudei ?i fazei
f = (0:length(y)-1)*99/length(y); % Vectorul frecven?ei
plot(f,m); title('Magnitude');
set(gca,'XTick',[15 40 60 85]);
figure; plot(f,p*180/pi); title('Faza');
set(gca,'XTick',[15 40 60 85])
3.1 Modelai un semnal dup cum urmeaz:

A=0.75;
w=0.5;
Ts=0.01;
T=100;
t=0:Ts:T;
y=A*rectpuls(t,w);
stem(t(1:100),y(1:100)), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Semnal periodic in forma dreptunghiulara')
xlabel('t,sec'),ylabel('Y(t)'),grid

3.2 Aplicai procedura fft i afiai dependena modului de frecven


dup cum urmeaz:
A=0.75;
w=0.5;
Ts=0.01;
T=100;
t=0:Ts:T;
y=A*rectpuls(t,w);
x=fft(y);
df=1/T; Fmax=1/Ts;
f=0:df:Fmax;
a=abs(x);
stem(f,a), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Modului TF a semnalui periodic in forma dreptunghiulara')
xlabel('Frecven?a Hz'),ylabel('Modulul'),grid
3.3 Aplicai procedura fftshift i afiai dependena modului de frecven:
A=0.75;
w=0.5;
Ts=0.01;
T=100;
t=0:Ts:T;
y=A*rectpuls(t,w);
x=fft(y);
xp=fftshift(x);
a=abs(xp);
df=1/T; Fmax=1/Ts;
f1=-Fmax/2:df:Fmax/2;
stem(f1,a), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Modului TF a semnalui periodic in forma dreptunghiulara')
xlabel('Frecven?a Hz'),ylabel('Modulul'),grid

3.4 Afiai pe o singur dependen partea real i partea imaginar a TF:


A=0.75;
w=0.5;
Ts=0.01;
T=100;
t=0:Ts:T;
y=A*rectpuls(t,w);
x=fft(y);
xp=fftshift(x);
df=1/T; Fmax=1/Ts;
f1=-Fmax/2:df:Fmax/2;
dch=real(xp); mch=imag(xp);
plot(f1,dch,f1,mch), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Partea real? ?i partea imaginar? TF a semnalui in forma
dreptunghiulara')
xlabel('Frecven?a Hz'),ylabel('Modulul ?i faza'),grid
4.1 Generai un proces n forma zgomotului alb:
Ts=0.01;
T=50;
t=0:Ts:T;
x1=rand(1,length(t));
plot(t,x1), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Zgomot alb')
xlabel('Timpul'),ylabel('X1(t)'),grid
4.2 Proiectai un filtru i filtrai zgomotul alb:

Ts=0.01;
T=50;
t=0:Ts:T;
x1=rand(1,length(t));
a=0;
b=0;
om0=2*pi; dz=0.05; A=1; oms=om0*Ts;
a(1)=1+2*dz*oms+oms^2;
a(2)=-2*(1+dz*oms);
a(3)=1;
b(1)=A*2*dz*oms^2;
y1=filter(b,a,x1);
plot(t,y1), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Iesirea filtrului')
xlabel('Timpul'),ylabel('Y1(t)'),grid

4.3 Reprezentai TF a zgomotului alb i spectrul densitii de putere:

Ts=0.01;
T=50;
t=0:Ts:T;
x1=rand(1,length(t));
om0=2*pi; dz=0.05; A=1; oms=om0*Ts;
a(1)=1+2*dz*oms+oms^2;
a(2)=-2*(1+dz*oms);
a(3)=1;
b(1)=A*2*dz*oms^2;
y1=filter(b,a,x1);
df=1/T; Fmax=1/Ts;
f=-Fmax/2:df:Fmax/2;
dovg=length(f);
Fu1=fft(x1)/dovg; Fu2=fft(y1)/dovg;
Fu1p=fftshift(Fu1); Fu2p=fftshift(Fu2);
A1=abs(Fu1p); A2=abs(Fu2p);
S1=Fu1p.*conj(Fu1p)*dovg; S2=Fu2p.*conj(Fu2p)*dovg;
subplot(2,1,1);
stem(f,A1), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Modulul zgomotului');
subplot(2,1,2);
stem(f,S1), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Spectrul densit??ii de putere');
xlabel('Frecventa Hz')

4.4 Repetai p. 4.4 pentru semnalele de la ieirea filtrului:

c1=fix(dovg/2)-200; c2=fix(dovg/2)+200; length(f)


subplot(2,1,1);
stem(f(c1:c2),A2(c1:c2)), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Modulul zgomotului la iesirea filtrului');
subplot(2,1,2);
stem(f(c1:c2),S2(c1:c2)), grid, set (gca,'FontName', ...
'ArialCyr','FontSize',16)
title('Spectrul densit??ii de putere la iesirea filtrului ');
xlabel('Frecventa Hz')

ans =

5001
Concluzie

La masurarea unor semnale este important sa respectam principiul Neqiust (fregventa de masurare
trebue sa fie de doua ori mai mare ca fregventa semnalului masurat) daca nu se respecta acest principiu
masurarile se vor efectua cu o fregventa mai joasa ca si in exemplu din laborator in loc ca sa masuram
fregventa de 108 Hz noi masuram 20Hz. Am generat zgomot alb si am executat un filtru pentru acesta.