Вы находитесь на странице: 1из 30

OT3OS1

20.12.2007.

Metode projektovanja FIR filtara

Specifikacije za amplitudsku
karakteristiku

Projektovanje primenom prozora


MATLAB
Naredba FIR1
N=16;
n=[0:N]';
f6dB=100;
f0=1000;
wn=f6dB/(f0/2);
h=fir1(N,wn);
figure,stem(n,h),xlabel('n'),ylabel('h(n)');
[H,w]=freqz(h,1,1000,f0);
figure,plot(w,20*log10(abs(H))),xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');
line([0 f0/2],[-6 -6],'color',[0 0 0]);
line([f6dB f6dB],[-50 0],'color',[0 0 0]);
z=roots(h);
p=zeros(size(z));
figure,zplane(z,p);

Reenje1
0.3

0.25

0.2

h(n)

0.15

0.1

0.05

-0.05

8
n

10

12

14

16

Reenje2
20
0
-20

|H(ej )| [dB]

-40
-60
-80
-100
-120
-140

50

100

150

200

250
f [Hz]

300

350

400

450

500

Reenje3
1.5

Imaginary Part

0.5

16

-0.5

-1

-1.5
-1

-0.5

0.5
Real Part

1.5

2.5

Uticaj prozora
N=32;
n=[0:N]';
fp=100;
f0=1000;
wn=fp/(f0/2);
h1=fir1(N,wn,rectwin(N+1));
h2=fir1(N,wn,hamming(N+1));
h3=fir1(N,wn,blackman(N+1));
figure,stem(n,[h1;h2;h3]'),xlabel('n'),ylabel('h(n)');
[H1,w]=freqz(h1,1,1000,f0);
[H2,w]=freqz(h2,1,1000,f0);
[H3,w]=freqz(h3,1,1000,f0);
figure,plot(w,20*log10([abs(H1) abs(H2) abs(H3)])),
xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');

Reenje1
0.3

pravougaoni
Hamming-ov
Blackman-ov

0.25

0.2

h(n)

0.15

0.1

0.05

-0.05

10

20
n

30

40

Reenje2
20

pravougaoni
Hammingov
Blackman-ov

0
-20

|H(ej )| [dB]

-40
-60
-80
-100
-120
-140
-160
-180

100

200

300
f [Hz]

400

500

Red LP filtra
N1=32;
N2=33;
n=[0:N2]';
fp=100;
f0=1000;
wn=fp/(f0/2);
h1=fir1(N1,wn);
h1(N2+1)=0;
h2=fir1(N2,wn);
figure,stem(n,[h1;h2]'),xlabel('n'),ylabel('h(n)');
[H1,w]=freqz(h1,1,1000,f0);
[H2,w]=freqz(h2,1,1000,f0);
figure,plot(w,20*log10([abs(H1) abs(H2)])),
xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');
[g1,w]=grpdelay(h1,1,1000,f0);
[g2,w]=grpdelay(h2,1,1000,f0);
figure,plot(w,[g1 g2]),xlabel('f [Hz]'),ylabel('gd'),ylim([15 17]);

Reenje1
0.2

N=32
N=33

0.15

h(n)

0.1

0.05

-0.05

10

15

20
n

25

30

35

Reenje2
20

N=32
N=33

|H(ej )| [dB]

-20

-40

-60

-80

-100

-120

100

200

300
f [Hz]

400

500

Reenje3
17

N=32
N=33

16.8
16.6
16.4

gd

16.2
16
15.8
15.6
15.4
15.2
15

100

200

300
f [Hz]

400

500

Red HP filtra
N1=32;
N2=33;
fp=100;
f0=1000;
wn=fp/(f0/2);
h1=fir1(N1,wn,'high');
h2=fir1(N2,wn,'high');
h1(length(h2))=0;
n=[0:length(h2)-1]';
figure,stem(n,[h1;h2]'),xlabel('n'),ylabel('h(n)');
[H1,w]=freqz(h1,1,1000,f0);
[H2,w]=freqz(h2,1,1000,f0);
figure,plot(w,20*log10([abs(H1) abs(H2)])),
xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');
[g1,w]=grpdelay(h1,1,1000,f0);
[g2,w]=grpdelay(h2,1,1000,f0);
figure,plot(w,[g1 g2]),xlabel('f [Hz]'),ylabel('gd'),ylim([15 17.5]);

Reenje1
1.2

N=32
N=33->34

0.8

h(n)

0.6

Warning: Odd order symmetric FIR


filters must have a gain of zero
at the Nyquist frequency. The
order is being increased by one.

0.4

0.2

-0.2

10

15

20
n

25

30

35

Reenje2
20

N=32
N=33->34

|H(ej )| [dB]

-20

-40

-60

-80

-100

-120

100

200

300
f [Hz]

400

500

Reenje3
17.5

N=32
N=33

17

gd

16.5

16

15.5

15

100

200

300
f [Hz]

400

500

Projektovanje zasnovano na
frekvencijskom odabiranju
MATLAB
Naredba FIR2
N=32; f6dB=100; f0=1000;
wn=f6dB/(f0/2);
h1=fir1(N,wn);
h2=fir2(N,[0 wn 1],[1 0.5 0]);
h3=fir2(N,[0 wn wn 1],[1 1 0 0]);
n=[0:N]';
figure,stem(n,[h1;h2;h3]'),xlabel('n'),ylabel('h(n)'),;
[H1,w]=freqz(h1,1,1000,f0);
[H2,w]=freqz(h2,1,1000,f0);
[H3,w]=freqz(h3,1,1000,f0);
figure,plot(w,20*log10([abs(H1) abs(H2) abs(H3)])),
xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');
z1=roots(h1); p1=zeros(size(z1));
z2=roots(h2); p2=zeros(size(z2));
z3=roots(h3); p3=zeros(size(z3));
figure,zplane([z1 z2 z3],[p1 p2 p3]);

Reenje1
0.35

fir1
fir2
fir2

0.3
0.25

h(n)

0.2
0.15
0.1
0.05
0
-0.05

10

15

20
n

25

30

35

Reenje2
20

fir1
fir2
fir2

|H(ej )| [dB]

-20

-40

-60

-80

-100

-120

100

200

300
f [Hz]

400

500

Reenje3
fir1
fir2
fir2

1.5

Imaginary Part

1
0.5
32

0
-0.5
-1
-1.5
-2

-1

0
Real Part

Optimalna aproksimacija
MATLAB
Naredba FIRPM
N=32;
fg=[0 100 200 500];
f0=1000;
wg=fg/(f0/2);
h1=fir2(N,wg,[1 1 0 0]);
h2=firpm(N,wg,[1 1 0 0]);
n=[0:N]';
figure,stem(n,[h1;h2]'),xlabel('n'),ylabel('h(n)');
[H1,w]=freqz(h1,1,1000,f0);
[H2,w]=freqz(h2,1,1000,f0);
figure,plot(w,20*log10([abs(H1) abs(H2)])),
xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');
figure,plot(w,[abs(H1) abs(H2)]),xlabel('f [Hz]'),ylabel('|H(e^j^\omega)|');
z1=roots(h1); p1=zeros(size(z1));
z2=roots(h2); p2=zeros(size(z2));
figure,zplane([z1 z2],[p1 p2]);

Reenje1
0.3

fir2
firpm

0.25
0.2

h(n)

0.15
0.1
0.05
0
-0.05
-0.1

10

15

20
n

25

30

35

Reenje2
20

fir2
firpm

0
-20

|H(ej )| [dB]

-40
-60
-80
-100
-120
-140

100

200

300
f [Hz]

400

500

Reenje3
2

fir2
firpm

1.5

Imaginary Part

1
0.5
32

0
-0.5
-1
-1.5
-2
-3

-2

-1
Real Part

Red HP filtra
N1=32;
N2=33;
fg=[0 100 200 500];
f0=1000;
wg=fg/(f0/2);
h1=firpm(N1,wg,[0 0 1 1]);
h2=firpm(N2,wg,[0 0 1 1]);
h3=firpm(N2,wg,[0 0 1 1],'h');
n=[0:length(h2)-1]';
figure,stem(n,[h1 0 0;h2;h3 0]'),xlabel('n'),ylabel('h(n)');
[H1,w]=freqz(h1,1,1000,f0);
[H2,w]=freqz(h2,1,1000,f0);
[H3,w]=freqz(h3,1,1000,f0);
figure,plot(w,20*log10([abs(H1) abs(H2) abs(H3)])),
xlabel('f [Hz]'),ylabel('|H(e^j^\omega)| [dB]');
[g1,w]=grpdelay(h1,1,1000,f0);
[g2,w]=grpdelay(h2,1,1000,f0);
[g3,w]=grpdelay(h3,1,1000,f0);
figure,plot(w,[g1 g2 g3]),xlabel('f [Hz]'),ylabel('gd'),ylim([15 18]),;

Reenje1
0.8

N=32
N=33->34
N=33, tip 4

0.6

0.4

h(n)

0.2

-0.2

-0.4

-0.6

10

15

20
n

25

30

35

Warning: Odd order symmetric FIR


filters must have a gain of zero
at the Nyquist frequency. The
order is being increased by one.
Alternatively, you can pass a
trailing 'h' argument,
as in firpm(N,F,A,W,'h'), to design
a type 4 linear phase filter.

Reenje2
20

N=32
N=33->34
N=33, tip 4

0
-20

|H(ej )| [dB]

-40
-60
-80
-100
-120
-140

100

200

300
f [Hz]

400

500

Reenje3
18

N=32
N=33->34
N=33, tip 4

17.5

gd

17

16.5

16

15.5

15

100

200

300
f [Hz]

400

500

Вам также может понравиться