You are on page 1of 11

Lj. Mili, J.

erti, Reeni zadaci iz Obrade signala I

9. Digitalni filtri konanog impulsnog odziva (FIR)


Zadatak br.1
Dat je signal x(t), definisan izrazom,
x( t ) = cos( 2 200t ) + n( t ) ,

gde je n(t) Gausov um jedinine snage.


(a) Generisati diskretni signal {x(n)} koji sadri prvih 512 odbiraka signala x(t). Frekvencija odabiranja
iznosi fs=1000 Hz.
(b) Projektovati FIR filtar propusnik opsega frekvencija 32. reda graninih frekvencija fc1=100 Hz i
fc2=300 Hz primenom Hamingovog prozora. Izraunati i grafiki prikazati impulsni odziv
projektovanog filtra.
(c) Izraunati i grafiki prikazati raspored nula i polova projektovanog filtra u z ravni, njegovu
amplitudsku karakteristiku i slabljenje, faznu karakteristiku, kao i njegovo grupno kanjenje.
(d) Izraunati diskretni signal {y(n)} koji se dobija na izlazu iz projektovanog filtra kada se ovaj pobudi
signalom {x(n)}.
(e) Grafiki prikazati amplitudski spektar signala na ulazu i izlazu projektovanog filtra.

Reenje

Reavanje emo zapoeti zadavanjem vrednosti parametara definisanih tekstom zadatka.


clear all
close all
Ns=512; Nf=32;
fc=200; P=1;
fs=1000; T=1/fs;
fc1=100; fc2=300;

(a) Niz od 512 odbiraka kontinualnog signala x(t) moe se generisati na sledei nain:
t=(0:T:(Ns-1)*T)';
x=cos(2*pi*fc*t)+sqrt(P)*randn(size(t));

(b) fir1 je opti program za projektovanje FIR filtara propusnika niskih, visokih ili opsega frekvencija.
Sintaksa naredbe za propusnik opsega frekvencija projektovanog Hamingovim prozorom je
h=fir1(Nf, [wc1 wc2]);

gde je h impulsni odziv projektovanog filtra, dok wc1 i wc2 predstavljaju granine frekvencije filtra,
normalizovane na polovinu uestanosti odabiranja.

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


wc1=fc1/(fs/2);
wc2=fc2/(fs/2);
h=fir1(Nf,[wc1 wc2]);
n=(0:Nf)';
figure (1)
stem(n,h), xlabel('n'),...
title('Impulsni odziv FIR filtra')
axis([0 Nf -0.3 0.5])

(c) Iz oblika impulsnog odziva filtra teko je zakljuiti neto o osobinama projektovanog filtra. Stoga se
raunaju i crtaju drugi parametri filtra, pre svega raspored nula i polova njegove funkcije prenosa. nule
se dobijaju kao korenovi funkcije prenosa, dok su svi polovi u koordinatnom poetku.
figure (2)
z=roots(h);
p=zeros(size(z));
zplane(z,p);

Raspored nula pokazuje da se ne radi o filtru minimalne faze.


Amplitudsku i faznu karakteristiku projektovanog filtra emo izraunati korienjem naredbe freqz.
S obzirom da obraujemo odbirke kontinualnog signala, funkciju prenosa filtra emo prikazati u
frekvencijskoj skali koja odgovara frekvenciji odabiranja.
[H,f]=freqz(h,1,100,fs);
M=abs(H);
a=-20*log10(M);
figure (3)
subplot(211), plot(f,M), xlabel('frekvencija [Hz]'),...
2

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


ylabel('Amplitudska karakteristika'), axis([0 fs/2 0 1.2]);
subplot(212), plot(f,a), xlabel('frekvencija [Hz]'),...
ylabel('Slabljenje [dB]'), axis([0 fs/2 0 100]);

Sa karakteristike slabljenja je mnogo lake uoiti ponaanje filtra u nepropusnom opsegu, pa se ona i
ee koristi u prikazivanju frekvencijskog odziva filtra od amplitudske karakteristike.
FIR filtri se obino tako projektuju da imaju linearnu fazu, to je uz garantovanu stabilnost njihova
glavna prednost. I ovaj filtar ima linearnu fazu, u ta se moemo i uveriti:
fi= unwrap(angle(H));
tau=grpdelay(h,1,100);
figure (4)
subplot(211), plot(f,fi), xlabel('frekvencija [Hz]'),...
ylabel('Fazna karakteristika'), axis([0 fs/2 -40 10]);
subplot(212), plot(f,tau), xlabel('frekvencija [Hz]'),...
ylabel('Kasnjenje'), axis([0 fs/2 10 20]);

(d) Signal na izlazu iz filtra dobija se naredbom filter:


y=filter(h,1,x);

(e) Spektre emo raunati primenom DFT, a prikazaemo ih kao da se radi o spektrima kontinualnih
signala ije odbirke obraujemo:
X=fft(x);
Y=fft(y);
df=fs/Ns;
3

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


ffft=(0:df:(Ns/2-1)*df)';
Mx=T*abs(X(1:Ns/2));
My=T*abs(Y(1:Ns/2));
Figure (5)
subplot(211), plot(ffft,Mx),...
xlabel('frekvencija [Hz]'), ylabel('Ampl. spektar X(jw)')
axis([0 fs/2 0 0.3]);
subplot(212), plot(ffft,My),...
xlabel('frekvencija [Hz]'), ylabel('Ampl. spektar Y(jw)')
axis([0 fs/2 0 0.3]);

Zadatak br. 2
Dat je signal x(t), definisan izrazom

x(t ) = cos(2 10t ) + n(t ) ,


gde je n(t) Gausov um snage 2=2.
Generisati diskretni signal {x(n)} koji sadri prvih 512 odbiraka signala x(t). Frekvencija odabiranja
iznosi fs=1000 Hz.
Projektovati FIR filtar propusnik niskih frekvencija 32. reda granine frekvencije fg=50 Hz primenom
pravougaonog prozora i primenom trougaonog prozora.
Izraunati i grafiki prikazati amplitudsku karakteristiku i karakteristiku slabljenja oba filtra.
Izraunati diskretni signal {y(n)} koji se dobija na izlazu FIR filtra projektovanog primenom
pravougaonog prozora kada se ovaj pobudi signalom {x(n)} i grafiki prikazati signal na ulazu i izlazu
projektovanog filtra.

Reenje

clear all
close all
Ns=512; Nf=32;
f=10; P=2;
fs=1000; T=1/fs;
4

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


fg=50;
t=(0:T:(Ns-1)*T)';
x=cos(2*pi*f*t)+sqrt(P)*randn(size(t));
wg=fg/(fs/2);
hbox=fir1(Nf,wg,boxcar(Nf+1));
hbart=fir1(Nf,wg,bartlett(Nf+1));
[Hbox,f]=freqz(hbox,1,1000,fs);
Mbox=abs(Hbox);
abox=-20*log10(Mbox);
[Hbart,f]=freqz(hbart,1,1000,fs);
Mbart=abs(Hbart);
abart=-20*log10(Mbart);
figure (1)
subplot(211), plot(f,Mbox), xlabel('frekvencija [Hz]')
ylabel('Amplitudska karakteristika'), axis([0 fs/2 0 1.2]);
title('FIR filtar, pravougaoni prozor')
subplot(212), plot(f,abox), xlabel('frekvencija [Hz]')
ylabel('Slabljenje [dB]'), axis([0 fs/2 0 50]);

figure (2)
subplot(211), plot(f,Mbart), xlabel('frekvencija [Hz]')
ylabel('Amplitudska karakteristika'), axis([0 fs/2 0 1.2]);
title('FIR filtar, trougaoni prozor')
subplot(212), plot(f,abart), xlabel('frekvencija [Hz]')
ylabel('Slabljenje [dB]'), axis([0 fs/2 0 50]);

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


y=filter(hbox,1,x);
figure (3)
subplot(211), plot(t,x)
ylabel('x'),title('Signal na ulazu')
axis([0,0.511,-6,6])
subplot(212), plot(t,y),...
xlabel('t [ms]'), ylabel('y')
title('Signal na izlazu')
axis([0,0.511,-2,2])

Komentar: Sa slike je oigledno da su primenjenim filtrom potisnute samo komponente uma na


viim uestanostima.

Zadatak br. 3
Dat je signal x(t), definisan izrazom,
x(t ) = cos(2 150t ) + n(t ) ,
gde je n(t) Gausov um snage 2=2.
Generisati diskretni signal {x(n)} koji sadri prvih 256 odbiraka signala x(t). Frekvencija odabiranja
iznosi fs=1000 Hz.
Projektovati optimalni FIR filtar propusnik opsega 29. reda graninih frekvencija propusnog opsega
fp1=100 Hz i fp2=200 Hz, kao i graninih frekvencija nepropusnog opsega fa1=50 Hz i fa2=250 Hz.
Izraunati i grafiki prikazati eljenu i realizovanu amplitudsku karakteristiku .
Izraunati i prikazati grupno kanjenje.
Izraunati diskretni signal {y(n)} koji se dobija na izlazu projektovanog FIR filtra kada se ovaj pobudi
signalom {x(n)} i grafiki prikazati amplitudski spektar signala na ulazu i izlazu projektovanog filtra.

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I

Reenje
clear all
close all
Ns=256; Nf=29;
f=150; P=2;
fs=1000; T=1/fs;
t=(0:T:(Ns-1)*T)';
x=cos(2*pi*f*t)+sqrt(P)*randn(size(t));
b=remez(29,[0,50/500,100/500,200/500,250/500,1],[0,0,1,1,0,0]);
[H,F]=freqz(b,1,512,fs);
figure (1)
plot(F,abs(H),[0,50,100,200,250,500],[0,0,1,1,0,0],'r--')
xlabel('frekvencija [Hz]')
ylabel('Amplitudska karakteristika'), axis([0 fs/2 0 1.2]);
title('Optimalni FIR filtar')

[gd,F]=grpdelay(b,1,512,fs);
figure (2)
plot(F,gd)
xlabel('frekvencija [Hz]')
ylabel('Kasnjenje [ms]')
title('Optimalni FIR filtar')

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


y=filter(b,1,x);
[X,F]=freqz(x,1,512,fs);
[Y,F]=freqz(y,1,512,fs);
figure (3)
subplot(211), plot(F,abs(X))
ylabel('abs(X)'),title('Spektar signala na ulazu')
subplot(212), plot(F,abs(Y))
xlabel('Frekvencija [Hz]'), ylabel('abs(Y)')
title('Spektar signala na izlazu')

Zadatak br. 4
Dat je signal x(t), definisan izrazom,
x(t ) = sin (2 100t ) + cos(2 300t ) .
Generisati diskretni signal {x(n)} koji sadri prvih 512 odbiraka signala x(t). Frekvencija odabiranja
iznosi fs=1000 Hz.
Projektovati FIR filtar propusnik niskih frekvencija 32. reda granine frekvencije fg=200 Hz primenom
Hamingovog prozora. Grafiki prikazati impulsni odziv projektovanog filtra.
Izraunati diskretni signal {y(n)} koji se dobija na izlazu projektovanog filtra kada se ovaj pobudi
signalom {x(n)}.
Grafiki prikazati signal na ulazu i izlazu projektovanog filtra.

Reenje

clear all
close all
Ns=512; Nf=32;
f1=100; f2=300; P=2;
fs=1000; T=1/fs;
fg=200;
t=(0:T:(Ns-1)*T)';
8

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


x=sin(2*pi*f1*t)+cos(2*pi*f2*t);
wg=fg/(fs/2);
h=fir1(Nf,wg);
figure (1)
stem(0:32,h), title ('Impulsni odziv ')
xlabel('n'),ylabel('h(n)')

y=filter(h,1,x);
figure (2)
subplot(211), plot(t,x)
ylabel('x'),title('Signal na ulazu')
axis([0,0.511,-2,2])
subplot(212), plot(t,y),...
xlabel('t [ms]'), ylabel('y')
title('Signal na izlazu')
axis([0,0.511,-2,2])

Zadatak br. 5

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I

Zadate su specifikacije FIR filtra propusnika niskih frekvencija:


Granina frekvencija propusnog opsega p=0.35,
Granina frekvencija nepropusnog opsega a=0.46,
Tolerancija amplitudske karakteristike u propusnom opsegu p=0.025,
Tolerancija amplitudske karakteristike u nepropusnom opsegu a=0.01.
Prema postavljenim zahtevima projektovati optimalan FIR filtar linearne fazne karakteristike.
Izraunati i prikazati amplitudsku karakteristiku i karakteristiku slabljenja filtra.
Izraunati i prikazati faznu karakteristiku filtra.
Prikazati impulsni odziv filtra.

Reenje
clear all
close all
fp=0.35;
fa=0.46;
[Nf,fo,mo,w] = remezord( [fp,fa], [1 0], [0.025 0.01]);
Nf
Nf =
30
h = remez(Nf,fo,mo,w);
[H,f]=freqz(h,1,1000,1);
M=abs(H);
a=-20*log10(M);
figure (1)
subplot(211), plot(f,M), xlabel('frekvencija [Hz]')
ylabel('Amplitudska karakteristika')
grid
axis([0 0.5 0 1.2]);
subplot(212), plot(f,a), xlabel('Normalizovana frekvencija ')
ylabel('Slabljenje [dB]')
grid
axis([0 0.5 0 60]);
fi= unwrap(angle(H));
figure (2)
subplot(211), plot(f,fi), xlabel('Normalizovana frekvencija')
title('Fazna karakteristika'), axis([0 0.5 -30 10]);

10

Lj. Mili, J. erti, Reeni zadaci iz Obrade signala I


n=(0:Nf)';
subplot(212)
stem(n,h), xlabel('n'),...
title('Impulsni odziv FIR filtra')
axis([0 Nf -0.2 0.5])

11

You might also like