Professional Documents
Culture Documents
2017-2018 Fall
Introduction
x[n]
Definition
x[n]
z −1 z −1 z −1
FIR Properties
Disadvantage:
Requires more taps and computational power is required compared to
an IIR filter with similar sharpness or selectivity, especially for low
frequency cut-offs.
Design Methods
Filtering Specifications
H(e jω )
1+δ
1 ∆ω Transition band
1−δ δ Ripple
[ωs , π] Stop band
[0, ωp ] Pass band
∆ω
δ
ω
ωp ωc ωs π
hi [n]
w [n]
Low-pass filter
HLP (e jω )
jω 1, |ω| ≤ ωc
HLP (e ) =
0, ωc < |ω| ≤ π
n
−π −ωc ωc π
hLP [n]
sin(ωc n)
hLP [n] = ,
πn
n
Matlab implementation:
>> hlp = sinc(wc/pi*n)*wc/pi;
High-pass filter
HHP (e jω )
jω 0, |ω| ≤ ωc
HHP (e ) =
1, ωc < |ω| ≤ π
n
−π −ωc ωc π
hHP [n]
sin(ωc n)
hHP [n] = δ[n] −
πn n
Matlab implementation:
>> hhp = [dirac(n2)>1] - sinc(wc/pi*n2)*wc/pi;
Band-pass filter
0, |ω| ≤ ωc1
HBP (e jω ) = 1, ωc1 < |ω| ≤ ωc2
0, ωc2 < |ω| ≤ π HBP (e jω )
n
−ωc2 -ωc1 ωc1 ωc2 π
sin(ωc2 n) sin(ωc1 n)
hBP [n] = −
πn πn
Matlab implementation:
>> hbp = sinc(wc2/pi*n)*wc2/pi - sinc(wc1/pi*n)*wc1/pi;
Band-stop filter
1, |ω| ≤ ωc1
jω
HBS (e ) = 0, ωc1 < |ω| ≤ ωc2
1, ωc2 < |ω| ≤ π HBS (e jω )
n
−ωc2 -ωc1 ωc1 ωc2 π
sin(ωc1 n) sin(ωc2 n)
hBS [n] = +δ[n]−
πn πn
Matlab implementation:
>> hbs = sinc(wc1/pi*n)*wc1/pi + [dirac(n)>1] ...
- sinc(wc2/pi*n)*wc2/pi;
L
X sin(ωl n)
hML [n] = (Al − Al+1 ) ·
πn n
l=1
ω1 ω2 ω3 π
with AL+1 = 0.
Matlab implementation:
>> n = -100:100; % Length of filter
>> A = [3, 1, 0, 2, 0]; % List magnitudes
>> w = [0.3*pi, 0.55*pi, 0.8*pi,1*pi]; % List frequencies
>> h = zeros(size(n));
>> for k = 1:4
>> h = h + (A(k) - A(k+1))*sinc(w(k)/pi*n)*w(k)/pi;
>> end
ATK (YTU) Signal Processing 2017-2018 Fall 17 / 47
Window Design Method Ideal Filters
Hilbert Transformer
jω j, −π ≤ ω < 0
HHT (e ) =
−j, 0 ≤ ω ≤ π
0, for n even
hHT [n] = 2
πn , for n odd
Matlab implementation:
>> h = mod(n,2)*2/pi./n;
Differantiator
HDIFF (e jω ) = jω
0, n=0
hDIFF [n] = cos(πn)
n , |n| > 0
Matlab implementation:
>> h = cos(pi*n)./n;
>> h(find(isinf(h))) = 0;
w [n]
1
n
−M M
|n|
w [n] = 1 − , −M ≤ n ≤ M
M +1
w [n]
1
n
−M − 1 M +1
w [n]
1
n
−M M
w [n]
1
n
−M M
2πn 4πn
w [n] = 0.42 + 0.5 cos + 0.08 cos , −M ≤ n ≤ M
2M + 1 2M + 1
w [n]
1
n
−M M
ATK (YTU) Signal Processing 2017-2018 Fall 25 / 47
Window Design Method Window Types
Parks-McClellan Method
Hd (e jω )
Desired frequency
1
response
n
ωp ωs π
H(e jω )
Parks-McClellan
algorithm design
n
ωs π
Matlab Implementation
N = 5; % Length of filter
wc = pi/2; % Cut-off Frequency
dw = 0.1*pi; % Transition Band
% Parks-McClellan Algorithm
h = firpm(N*2, [0 (wc-dw)/pi (wc+dw)/pi 1], [1 1 0 0]);
minimize cT x
subject to Ax ≤ b
Filtering Specifications
H(e jω )
1+δ
1 ∆ω Transition band
1−δ δ Ripple
[ωs , π] Stop band
[0, ωp ] Pass band
∆ω
δ
ω
ωp ωc ωs π
In the pass-band:
N
X
a0 + 2 ak cos(kω) − 1 ≤ δ
k=1
for all 0 ≤ ω ≤ ωc .
Equivalently,
N
!
X
a0 + 2 ak cos(kω) −δ ≤1
k=1
N
!
X
− a0 + 2 ak cos(kω) − δ ≤ −1
k=1
for any 0 ≤ ω ≤ ωp .
Constraints: Transition-band
In the stop-band:
N
X
a0 + 2 ak cos(kω) ≤ δ
k=1
Equivalently,
N
!
X
a0 + 2 ak cos(kω) −δ ≤0
k=1
N
!
X
− a0 + 2 ak cos(kω) −δ ≤0
k=1
for any ωs ≤ ω ≤ π.
Discretization
We can not evaluate at every ω point but instead in M samples among
ω ∈ [0, π]. Let’s choose
M = 15N
The samples are chosen as
π·k
ωk = , k = 0, 1, · · · , M
M
Then, the constraints become
1 2 ··· 2 −1 1
−1 −2 ··· −2 −1 −1
a0
1 2 cos(ω1 ) · · · 2 cos(Nω1 ) −1 a1 1
−1 −2 cos(ω1 ) · · · −2 cos(Nω1 ) −1 .. −1
≤
.
.. ..
. aN
.
1 2 cos(ωM ) · · · 2 cos(NωM ) −1 δ 0
−1 −2 cos(ωM ) · · · −2 cos(NωM ) −1 0
ATK (YTU) Signal Processing 2017-2018 Fall 44 / 47
Linear Programming Method Low-pass Filter
for k = 1:length(wl)
w = wl(k);
if w <= wp
A(cnt,:) = [1, 2*cos([1:L]*w), -1];
A(cnt+1,:) = [-1, -2*cos([1:L]*w), -1];
b(cnt) = 1;
b(cnt+1) = -1;
cnt = cnt+2;
elseif w >= ws
A(cnt,:) = [1, 2*cos([1:L]*w), -1];
A(cnt+1,:) = [-1, -2*cos([1:L]*w), -1];
b(cnt) = 0;
b(cnt+1) = 0;
cnt = cnt+2;
end
end
[H, W] = freqz(h);
plot(W/pi, abs(H))