tapds laborator 2

8
Laborator 2 TAPDS Lucrarea de faţă îsi propune să realizeze o prezentare a metodelor de generare şi utilizare a sistemelor multirată. Vor fi prezentate funcţii în mediul Matlab care corespund acestor metode şi vor fi furnizate exemple de utilizare a acestora. 1. Decimarea Decimarea reprezintă operaţia de reducere a frecvenţei de eşantionare cu un număr întreg M. Aceasta presupune ca în domeniul timp să se îndeplinească condiţia () ( ) d x n x nM . În domeniul frecvenţă, eşantionarea se va face după decimare cu rata ' / es es F F M . Trebuie deci verificat dacă şi după decimare noua frecvenţă de eşantionare mai îndeplineşte condiţia Nyquist ' 2 es M F F . Pentru a elimina posibilitatea apariţiei fenomenului de aliere spectrală se va utiliza înaintea circuitului elementar de decimare un filtru trece jos. Frecvenţa sa de tăiere rezultă din condiţia Nyquist de mai sus ' 2 / 2 2 2 es M es M es M M t es F F F M F F MF F F M Limitând deci componentele spectrale în frecvenţe normate la pi/M, după decimarea cu M acestea vor fi limitate la pi, deci nu va apărea aliere. 2 es F x j X e 3 3 2 ' es es M F F v j d X e M M 2 M 2 M M=2 2 2 3 M 3 3 2 ' es es M F F v j d X e Exemplul 1.1: Să se genereze următorul semnal 1 2 () sin(2 ) sin(2 ), 0.. 1 xn fn fn n N unde f 1 şi f 2 sunt frecvenţele normate corespunzătoare frecvenţelor F 1 =1000 Hz, respectiv F 2 =3500 Hz, frecvenţa de eşantionare fiind F es =20000 Hz. N este 64. Să se realizeze decimarea acestui semnal cu M=2. Se vor reprezenta spectrul semnalului iniţial şi spectrul semnalului decimat.

Upload: marius-ferdy

Post on 08-Aug-2015

25 views

Category:

Documents


1 download

DESCRIPTION

TAPDS Laborator 2

TRANSCRIPT

Page 1: TAPDS Laborator 2

Laborator 2 TAPDS

Lucrarea de faţă îsi propune să realizeze o prezentare a metodelor de generare şi

utilizare a sistemelor multirată. Vor fi prezentate funcţii în mediul Matlab care corespund

acestor metode şi vor fi furnizate exemple de utilizare a acestora.

1. Decimarea

Decimarea reprezintă operaţia de reducere a frecvenţei de eşantionare cu un număr

întreg M. Aceasta presupune ca în domeniul timp să se îndeplinească condiţia

( ) ( )dx n x nM . În domeniul frecvenţă, eşantionarea se va face după decimare cu rata

' /es esF F M . Trebuie deci verificat dacă şi după decimare noua frecvenţă de eşantionare mai

îndeplineşte condiţia Nyquist ' 2es MF F . Pentru a elimina posibilitatea apariţiei fenomenului

de aliere spectrală se va utiliza înaintea circuitului elementar de decimare un filtru trece jos.

Frecvenţa sa de tăiere rezultă din condiţia Nyquist de mai sus

' 2 / 2 2

2

es M es M es M

Mt

es

F F F M F F MF

F

F M

Limitând deci componentele spectrale în frecvenţe normate la pi/M, după decimarea

cu M acestea vor fi limitate la pi, deci nu va apărea aliere.

2

esF

xjX e

3

3

2'

es es

M

F F

vj

dX e

MM 2 M 2 M

M=2

2

2

3M

3

3

2'

es es

M

F F

vj

dX e

Exemplul 1.1:

Să se genereze următorul semnal

1 2( ) sin(2 ) sin(2 ), 0.. 1x n f n f n n N

unde f1 şi f2 sunt frecvenţele normate corespunzătoare frecvenţelor F1=1000 Hz, respectiv

F2=3500 Hz, frecvenţa de eşantionare fiind Fes=20000 Hz. N este 64.

Să se realizeze decimarea acestui semnal cu M=2. Se vor reprezenta spectrul

semnalului iniţial şi spectrul semnalului decimat.

Page 2: TAPDS Laborator 2

Comentaţi rezultatele obţinute.

0 10 20 30 40 50 60 70-2

-1.5

-1

-0.5

0

0.5

1

1.5

2semnal intrare

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40spectrul semnalului initial

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

5

10

15

20spectrul semnalului decimat

frecvente normate

Reluaţi aplicaţia pentru M=4. Se poate observa că apare fenomenul de aliere spectrală

deoarece noua frecvenţă de eşantionare (Fes/4 = 5kHz) nu mai este mai mare decat dublul

frecvenţei maxime a semnalului iniţial (Fmax=F2=3.5 KHz).

Apare deci necesitatea introducerii unui

filtru anti-aliere care să elimine

componentele spectrale aflate peste

pulsaţia normată pi/M. Vom genera acest

filtru folosind funcţia fir1 descrisă în

Laboratorul 1. Reamintim că aceasta

primea ca intrări ordinul filtrului (în cazul

de faţă alegem 30) şi frecvenţa normată de

intrare (în Matlab normarea se face la

Fes/2). Pentru a realize filtrarea propriu-

zisă după ce am obţinut funcţia de pondere

a filtrului, folosim funcţia Matlab filter.

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40spectrul semnalului initial

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

2

4

6

8spectrul semnalului decimat

frecvente normate

%generarea semnalului F1=1000; F2=3500; Fes=20e3; N=64; n=0:N-1; f1=F1/Fes; f2=F2/Fes; s=sin(2*pi*f1*n)+sin(2*pi*f2*n); figure,plot(s),grid, ,title('semnal intrare') %realizarea decimarii M=2; sd=s(1:M:end); S=fft(s,512); Sd=fft(sd,512); f=linspace(-0.5,0.5,512); figure,subplot(2,1,1),plot(f,fftshift(abs(S))),grid title('spectrul semnalului initial') xlabel('frecvente normate') subplot(2,1,2),plot(f,fftshift(abs(Sd))),grid title('spectrul semnalului decimat') xlabel('frecvente normate')

Page 3: TAPDS Laborator 2

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

20

40spectrul semnalului initial

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20spectrul semnalului filtrat

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

5spectrul semnalului filtrat si decimat

frecvente normate

Procedura de decimare completă, care conţine deci filtrul anti-aliere înaintea

decimatorului elementar, se poate realize direct folosind funcţia Matlab decimate. Aceasta

primeşte ca intrare semnalul ce trebuie decimat şi ordinul decimării.

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40spectrul semnalului initial

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

5

10spectrul semnalului decimat Matlab

frecvente normate

2. Interpolarea

Interpolarea reprezintă operaţia de creştere a frecvenţei de eşantionare cu un factor

întreg L. Iniţial de produce o expandare a semnalului discret prin introducerea a L-1

eşantioane nule între oricare două eşantioane succesive ale acestuia. În domeniul frecvenţelor

normate se va produce o comprimare cu L a spectrului semnalului iniţial. Apar aşa numitele

spectre imagine. Acestea sunt în număr de L-1 între componentele spectrale periodice ale

semnalului iniţial. Eliminarea lor se face folosind dupa interpolarea elementară un filtru trece

jos cu pulsaţia de tăiere pi/L. Se vor păstra în acest fel doar componentele care înainte de

interpolare se aflau î domeniul –pi,pi.

'

es esF LF

( / ), 0, , 2 ,...( )

0,i

x n L n L Lx n

in rest

%generarea filtrului anti-aliere h=fir1(30,1/M); %filtrare si apoi decimare sf=filter(h,1,s); sfd=sf(1:M:end); Sf=fft(sf,512); Sfd=fft(sfd,512); figure,subplot(3,1,1),plot(f,fftshift(abs(S))),grid title('spectrul semnalului initial') xlabel('frecvente normate') subplot(3,1,2),plot(f,fftshift(abs(Sf))),grid title('spectrul semnalului filtrat') xlabel('frecvente normate') subplot(3,1,3),plot(f,fftshift(abs(Sfd))),grid title('spectrul semnalului filtrat si decimat') xlabel('frecvente normate')

%decimarea Matlab smd=decimate(s,M); Smd=fft(smd,512); figure,subplot(2,1,1),plot(f,fftshift(abs(S))),grid title('spectrul semnalului initial') xlabel('frecvente normate') subplot(2,1,2),plot(f,fftshift(abs(Smd))),grid title('spectrul semnalului decimat Matlab') xlabel('frecvente normate')

Page 4: TAPDS Laborator 2

2

esF

xjX e

2'

es esF LF

vj

iX e

MM 2 M 2 M

L=3

2M

'

es esF LF

vj

ifX e

M

L

M

L

2

L

4

L

2M

L

M

L

Exemplul 2.1:

Să se genereze semnalul ( ) sin(0.4 ), 0.. 1x n n n N , unde N=64. Să se realizeze

mărirea ratei de eşantionare cu L=3.

0 1 2 3 4 5 6 7 8 9 10-1

-0.5

0

0.5

1semnalul initial

0 5 10 15 20 25 30-1

-0.5

0

0.5

1semnalul interpolat

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40spectrul semnalului initial

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40

X: 0.2671

Y: 29.69

spectrul semnalului interpolat

frecvente normate

%generarea semnalului N=64; n=0:N-1; s=sin(0.4*pi*n); %interpolarea elementara L=3; si=zeros(1,L*N); si(1:L:L*N)=s; figure(1),subplot(2,1,1),stem(0:10,s(1:11)) grid,title('semnalul initial') subplot(2,1,2),stem(0:L*10,si(1:L*10+1)) grid,title('semnalul interpolat') S=fft(s,512); Si=fft(si,512); f=linspace(-0.5,0.5,512); figure,subplot(2,1,1),plot(f,fftshift(abs(S))),grid title('spectrul semnalului initial') xlabel('frecvente normate'); subplot(2,1,2),plot(f,fftshift(abs(Si))),grid title('spectrul semnalului interpolat') xlabel('frecvente normate');

Page 5: TAPDS Laborator 2

Comentaţi rezultatele obţinute.

Vom proiecta în continuare un FTJ cu pulsaţia de tăiere normată pi/L. În acest scop

folosim funcţia fir1. Ordinul filtrului este ales 30.

0 5 10 15 20 25 30-0.4

-0.2

0

0.2

0.4semnalul interpolat si filtrat

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

frecvente normate

spectrul semnalului interpolat si filtrat

Procedura de interpolare completă, care conţine deci filtrul anti-imagini după

interpolatorul elementar, se poate realize direct folosind funcţia Matlab interp. Aceasta

primeşte ca intrare semnalul ce trebuie interpolat şi ordinul interpolării.

0 5 10 15 20 25 30-1

-0.5

0

0.5

1semnalul interpolat si filtrat

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

50

100

frecvente normate

spectrul semnalului interpolat si filtrat

3. Modificarea fracţionară a ratei de eşantionare

Pentru modificarea fracţionară a ratei de eşantionare se poate folosi o cominaţie de

decimare/ interpolare cu factori întregi M şi L. Evident că nu se var putea obţine decât anumiţi

factori fracţionari.

Contează ordinea în care se face modificarea fracţionară a ratei (întâi decimarea cu M

şi apoi interpolarea cu L sau invers)?

Procedura de modificare cu factor fracţionar a frecvenţei de eşantionare, care conţine

deci şi filtrele anti-aliere înainte de decimatorul elementar şi cel anti-imagini după

interpolatorul elementar, se poate realize direct folosind funcţia Matlab resample. Aceasta

primeşte ca intrare semnalul ce trebuie reeşantionat cu factor fracţionar, ordinul interpolării şi

ordinul decimării.

h=fir1(30,1/L); sif=filter(h,1,si); figure,subplot(2,1,1),stem(0:L*10,sif(16:L*10+16)) grid,title('semnalul interpolat si filtrat'); Sif=fft(sif,512); subplot(2,1,2),plot(f,fftshift(abs(Sif))) grid,xlabel('frecvente normate') title('spectrul semnalului interpolat si filtrat')

%interpolare matlab sim=interp(s,L); Sim=fft(sim,512); figure,subplot(2,1,1),stem(0:L*10,sim(16:L*10+16)) grid,title('semnalul interpolat si filtrat'); subplot(2,1,2),plot(f,fftshift(abs(Sim))) grid,xlabel('frecvente normate') title('spectrul semnalului interpolat si filtrat')

Page 6: TAPDS Laborator 2

Exemplul 3.1:

Fie un semnal sinusoidal de frecvenţă F1=8 KHz, eşantionat cu frecvenţa Fes=32 KHz.

Lungimea semnalului este 256. Se doreşte modificarea ratei de eşantionare la:

o Fes1=48 KHz

o Fes2=20 KHz

o Fes3=12 KHz

Stabiliţi factorii de interpolare L şi decimare M pentru fiecare caz.

Proiectaţi filtrele trece jos necesare în componenţa schemei.

Efectuaţi schimbarea frecvenţei de eşantionare pentru semnalul dat.

Reprezentaţi spectrele semnalelor generate de-a lungul procedurii de schimbare a ratei

de eşantionare.

4. Filtre polifazice folosite la decimare

Exemplul 4.1:

Să se implementeze cu filtre polifazice un decimator de ordin 4, care foloseste un FTJ

de lungime 32. Filtrul se va genera folosind metoda ferestrelor (funcţia fir1). Va avea ordinul

31 şi pulsaţia de tăiere normată pi/M.

Cele patru filtre polifazice se obţin prin decimarea cu 4 a răspunsului la impuls.

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-120

-100

-80

-60

-40

-20

0

20Functia de transfer a FTJ

frecvente normate

dB

%proiectarea filtrului decimatorului M=4; h=fir1(31,1/M); %decimarea filtrului ptr %obtinerea polifazicelor h1=h(1:M:32); h2=h(2:M:32); h3=h(3:M:32); h4=h(4:M:32); %functiile de transfer H=fft(h,512); H1=fft(h1,512); H2=fft(h2,512); H3=fft(h3,512); H4=fft(h4,512); %caracteristica in dB a FTJ f=linspace(-0.5,0.5,512); figure,plot(f,fftshift(20*log10(abs(H)))) title('Functia de transfer a FTJ'),grid xlabel('frecvente normate'),ylabel('dB') %caracteristiciel polifazicelor figure,plot(f,fftshift(20*log10(abs(H1)))) title('Functiile de transfer ale polifazicelor') xlabel('frecvente normate'),ylabel('dB'),grid hold on,plot(f,fftshift(20*log10(abs(H2))),'r') plot(f,fftshift(20*log10(abs(H3))),'c') plot(f,fftshift(20*log10(abs(H4))),'k'),hold off

%fazele polifazicelor figure,plot(f,fftshift(angle(H1))) title('Functiile de transfer ale polifazicelor') xlabel('frecvente normate'),ylabel('dB'),grid hold on,plot(f,fftshift(angle(H2)),'r') plot(f,fftshift(angle(H3)),'c') plot(f,fftshift(angle(H4)),'k'),hold off

Page 7: TAPDS Laborator 2

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-21

-20

-19

-18

-17

-16

-15

-14

-13

-12

-11Functiile de transfer ale polifazicelor

frecvente normate

dB

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5-4

-3

-2

-1

0

1

2

3

4Functiile de transfer ale polifazicelor

frecvente normate

dB

Exemplul 4.2:

Folosind filtrele proiectate anterior, să se decimeze cu 4 semnalul

1 2( ) sin(2 ) sin(2 )x n f n f n

cu f1=0.05 şi f2=0.1, de lungime N=1024.

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

50

100

150

200

250spectru semnal intrare

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40

50

60

70

80

90

100spectru semnal decimat si filtrat

frecvente normate

%generarea semnalului f1=0.05; f2=0.1; N=1024; n=0:N-1; s=sin(2*pi*f1*n)+sin(2*pi*f2*n); S=fft(s,512); f=linspace(-0.5,0.5,512); figure,plot(f,fftshift(abs(S))),grid title('spectru semnal intrare'), xlabel('frecvente normate') %decimarea pe ramuri sd1=s(1:4:N); sd2=s(2:4:N); sd3=s(3:4:N); sd4=s(4:4:N); %filtrarea sdf=filter(h1,1,sd1)+filter(h2,1,sd2)+... filter(h3,1,sd3)+filter(h4,1,sd4); Sdf=fft(sdf,512); figure,plot(f,fftshift(abs(Sdf))),grid title('spectru semnal decimat si filtrat'), xlabel('frecvente normate')

Page 8: TAPDS Laborator 2

5. Filtre polifazice folosite la interpolare

Exemplul 5.1:

Să se repete Exemplul 4.2 daca se doreşte interpolarea cu 4 a semnalului cu f1=0.3 şi

f2=0.4.

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

50

100

150

200

250spectru semnal intrare

frecvente normate

-0.5 -0.4 -0.3 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.50

10

20

30

40

50

60

X: 0.1008

Y: 50.6

spectru semnal interpolat

frecvente normate

%generarea semnalului f1=0.3; f2=0.4; N=1024; n=0:N-1; s=sin(2*pi*f1*n)+sin(2*pi*f2*n); S=fft(s,512); f=linspace(-0.5,0.5,512); figure,plot(f,fftshift(abs(S))),grid title('spectru semnal intrare'), xlabel('frecvente normate') %iesirile filtrelor sf1=filter(h1,1,s); sf2=filter(h2,1,s); sf3=filter(h3,1,s); sf4=filter(h4,1,s); %intreteserea acestor semnale si=reshape([sf1;sf2;sf3;sf4],1,4*N); Si=fft(si,512); figure,plot(f,fftshift(abs(Si))),grid title('spectru semnal interpolat'), xlabel('frecvente normate')