Transcript OT3OS1

OT3OS1
20.12.2007.
Metode projektovanja FIR filtara
Specifikacije za amplitudsku
karakteristiku
1+δp
1-δp
1
δs
0
ωp
ωa
π
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);
Rešenje1
0.3
0.25
0.2
h(n)
0.15
0.1
0.05
0
-0.05
0
2
4
6
8
n
10
12
14
16
Rešenje2
20
0
-20
|H(ej )| [dB]
-40
-60
-80
-100
-120
-140
0
50
100
150
200
250
f [Hz]
300
350
400
450
500
Rešenje3
1.5
1
Imaginary Part
0.5
16
0
-0.5
-1
-1.5
-1
-0.5
0
0.5
Real Part
1
1.5
2
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]');
Rešenje1
0.3
pravougaoni
Hamming-ov
Blackman-ov
0.25
0.2
h(n)
0.15
0.1
0.05
0
-0.05
0
10
20
n
30
40
Rešenje2
20
pravougaoni
Hammingov
Blackman-ov
0
-20
|H(ej )| [dB]
-40
-60
-80
-100
-120
-140
-160
-180
0
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]);
Rešenje1
0.2
N=32
N=33
0.15
h(n)
0.1
0.05
0
-0.05
0
5
10
15
20
n
25
30
35
Rešenje2
20
N=32
N=33
0
|H(ej )| [dB]
-20
-40
-60
-80
-100
-120
0
100
200
300
f [Hz]
400
500
Rešenje3
17
N=32
N=33
16.8
16.6
16.4
gd
16.2
16
15.8
15.6
15.4
15.2
15
0
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]);
Rešenje1
1.2
N=32
N=33->34
1
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
-0.2
0
5
10
15
20
n
25
30
35
Rešenje2
20
N=32
N=33->34
0
|H(ej )| [dB]
-20
-40
-60
-80
-100
-120
0
100
200
300
f [Hz]
400
500
Rešenje3
17.5
N=32
N=33
17
gd
16.5
16
15.5
15
0
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]);
Rešenje1
0.35
fir1
fir2
fir2
0.3
0.25
h(n)
0.2
0.15
0.1
0.05
0
-0.05
0
5
10
15
20
n
25
30
35
Rešenje2
20
fir1
fir2
fir2
0
|H(ej )| [dB]
-20
-40
-60
-80
-100
-120
0
100
200
300
f [Hz]
400
500
Rešenje3
fir1
fir2
fir2
1.5
Imaginary Part
1
0.5
32
0
-0.5
-1
-1.5
-2
-1
0
Real Part
1
2
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]);
Rešenje1
0.3
fir2
firpm
0.25
0.2
h(n)
0.15
0.1
0.05
0
-0.05
-0.1
0
5
10
15
20
n
25
30
35
Rešenje2
20
fir2
firpm
0
-20
|H(ej )| [dB]
-40
-60
-80
-100
-120
-140
0
100
200
300
f [Hz]
400
500
Rešenje3
2
fir2
firpm
1.5
Imaginary Part
1
0.5
32
0
-0.5
-1
-1.5
-2
-3
-2
-1
Real Part
0
1
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]),;
Rešenje1
0.8
N=32
N=33->34
N=33, tip 4
0.6
0.4
h(n)
0.2
0
-0.2
-0.4
-0.6
0
5
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.
Rešenje2
20
N=32
N=33->34
N=33, tip 4
0
-20
|H(ej )| [dB]
-40
-60
-80
-100
-120
-140
0
100
200
300
f [Hz]
400
500
Rešenje3
18
N=32
N=33->34
N=33, tip 4
17.5
gd
17
16.5
16
15.5
15
0
100
200
300
f [Hz]
400
500