Xử lý tín hiệu nâng cao
-Advanced signal processingChương 5
Bộ lọc số có đáp ứng xung hữu hạn và
vô hạn
Khái niệm
Lọc số: biến dạng sự phân bố tần số của
các thành phần của một tín hiệu
Phân loại
FIR: Hệ thống đặc trưng bởi đáp ứng xung có
chiều dài hữu hạn
IIR: Hệ thống đặc trưng bởi đáp ứng xung có chiều
dài vô hạn
Các mạch lọc đơn giản
Mạch lọc thông thấp (lowpass)
Mạch lọc thông cao (highpass)
Mạch lọc thông chắn (bandpass)
Mạch lọc thông dải (bandstop)
Mạch lọc FIR
Mạch lọc FIR có hàm truyền dạng tổng quát
M
H ( z ) = ∑ bm z
m =0
−m
Mạch lọc FIR thông thấp
Hàm truyền đạt
1
−1
H ( z) = 1 + z
2
(
)
Hàm truyền đạt này có một điểm không tại z=-1 và
một điểm cực tại z=0
Mạch lọc FIR thông thấp
Đáp ứng tần số của mạch lọc thông thấp:
1
1
− jω
H (e ) = (1 + e ) = (1 + cos ω − j sin ω )
2
2
1
ω
ω
2 ω
= 2 cos − 2 j sin cos
2
2
2
2
jω
ω
ω
ω
= cos cos − j sin
2
2
2
Vì:
ω
cos ω = 2 cos 2 − 1
2
ω
ω
sin ω = 2sin cos
2
2
Mạch lọc FIR thông thấp
Đáp ứng tần số của mạch lọc thông thấp:
1
1
− jω
H (e ) = (1 + e ) = (1 + cos ω − j sin ω )
2
2
1
ω
ω
2 ω
= 2 cos − 2 j sin cos
2
2
2
2
jω
ω
ω
ω
= cos cos − j sin
2
2
2
ω
H(e ) = cos e
2
jω
−j
ω
2
Mạch lọc FIR thông thấp
Đáp ứng biên độ
ω
H (e ) = cos e
2
jω
−j
ω
2
ω
= cos
2
b=[0.5 0.5];
a=[1];
[H,w]=freqz(b,a,100);
subplot(1,2,1);plot(w/pi,abs(H));
subplot(1,2,2);plot(w/pi,angle(H));
hàm freqz trả về đáp ứng tần số của một hệ thống tại một số hữu hạn
các điểm rời rạc trên vòng tròn đơn vị khi biết hàm truyền đạt của nó
Mạch lọc FIR thông thấp
Kết quả:
1
0
0.9
-0.2
0.8
-0.4
0.7
-0.6
0.6
0.5
-0.8
0.4
-1
0.3
-1.2
0.2
-1.4
0.1
0
0
0.5
1
-1.6
0
0.5
1
Tùy thuộc vào yêu cầu mà có thể sử dụng 1 lúc
nhiều bộ lọc
Mạch lọc FIR thông cao
Hàm truyền đạt
1
−1
H ( z) = 1 − z
2
(
)
Đáp ứng tần số
jω
H (e ) = je
−j
ω
2
ω
sin( )
2
Mạch lọc FIR thông cao
Đáp ứng biên độ
jω
H (e ) = je
−j
ω
2
ω
ω
sin( ) = sin( )
2
2
Mạch lọc FIR thông cao
b=[0.5 -0.5];
a=[1];
[H,w]=freqz(b,a,100);
subplot(1,2,1);plot(w/pi,abs(H));
subplot(1,2,2);plot(w/pi,angle(H));
1
1.6
0.9
1.4
0.8
1.2
0.7
1
0.6
0.5
0.8
0.4
0.6
0.3
0.4
0.2
0.2
0.1
0
0
0.5
1
0
0
0.5
1
Mạch lọc IIR
Mạch lọc IIR thông thấp
−1
1−α 1+ z
H ( z) =
−1
2 1 − αz
Đáp ứng tần số của của mạch lọc là:
− jω
1−α 1+ e
H (e ) =
− jω
2 1 − αe
jω
Mạch lọc IIR thông thấp
alpha1=0.9; b1=[1-alpha1, 1-alpha1]; a1=[2,-2*alpha1];
alpha2=0.7; b2=[1-alpha2, 1-alpha2]; a2=[2,-2*alpha2];
alpha3=0.4; b3=[1-alpha3, 1-alpha3]; a3=[2,-2*alpha3];
[H1,w]=freqz(b1,a1,100);
[H2,w]=freqz(b2,a2,100);
[H3,w]=freqz(b3,a3,100);
subplot(2,1,1);
plot(w/pi,abs(H1),'b--',w/pi,abs(H2),'r-',w/pi,abs(H3),'g-');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
subplot(2,1,2);
plot(w/pi,angle(H1),'b—’,w/pi,angle(H2),'r',w/pi,angle(H3),'g');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
Kết quả
1
alpha=0.9
alpha=0.7
alpha=0.4
0.8
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
alpha=0.9
alpha=0.7
alpha=0.4
-0.5
-1
-1.5
-2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Mạch lọc IIR thông cao
Hàm truyền đạt
−1
1+ α 1− z
H ( z) =
−1
2 1 − αz
Đáp ứng tần số
− jω
1+ α 1− e
H (e ) =
2 1 − αe − jω
jω
Mạch lọc IIR thông cao
alpha1=0.9; b1=[1+alpha1, -1-alpha1]; a1=[2,-2*alpha1];
alpha2=0.7; b2=[1+alpha2, -1-alpha2]; a2=[2,-2*alpha2];
alpha3=0.4; b3=[1+alpha3, -1-alpha3]; a3=[2,-2*alpha3];
[H1,w]=freqz(b1,a1,100);
[H2,w]=freqz(b2,a2,100);
[H3,w]=freqz(b3,a3,100);
subplot(2,1,1);
plot(w/pi,abs(H1),'b--',w/pi,abs(H2),'r-',w/pi,abs(H3),'g');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
subplot(2,1,2);
plot(w/pi,angle(H1),'b--',w/pi,angle(H2),'r',w/pi,angle(H3),'g-');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
Mạch lọc IIR thông cao
Mạch lọc IIR thông dải
Hàm truyền đạt
−2
1−α
1− z
H ( z) =
−1
−2
2 1 − β (1 + α ) z + αz
Mạch lọc IIR thông dải
beta=0.3;
alpha1=0.9; b1=[1-alpha1,0, -1+alpha1];
a1=[2,-2*beta*(alpha1+1),2*alpha1];
alpha2=0.7; b2=[1-alpha2,0, -1+alpha2];
a2=[2,-2*beta*(alpha2+1),2*alpha2];
alpha3=0.4; b3=[1-alpha3,0, -1+alpha3];
a3=[2,-2*beta*(alpha3+1),2*alpha3];
[H1,w]=freqz(b1,a1,100);
[H2,w]=freqz(b2,a2,100);
[H3,w]=freqz(b3,a3,100);
subplot(2,1,1);
plot(w/pi,abs(H1),'b--',w/pi,abs(H2),'r-',w/pi,abs(H3),'g');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
subplot(2,1,2);plot(w/pi,angle(H1),'b--',w/pi,angle(H2),'r',w/pi,angle(H3),'g-');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
Mạch lọc IIR thông dải
1
alpha=0.9
alpha=0.7
alpha=0.4
0.8
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
2
alpha=0.9
alpha=0.7
alpha=0.4
1
0
-1
-2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Mạch lọc chắn dải
Hàm truyền đạt
−1
−2
1+ α
1 − 2βz + z
H ( z) =
−1
−2
2 1 − β (1 + α ) z + αz
Mạch lọc chắn dải
beta=0.3;
alpha1=0.9; b1=[1+alpha1,-2*beta*(1+alpha1), 1+alpha1];
a1=[2,-2*beta*(alpha1+1),2*alpha1];
alpha2=0.7; b2=[1+alpha2, -2*beta*(1+alpha2), 1+alpha2];
a2=[2,-2*beta*(alpha2+1),2*alpha2];
alpha3=0.4; b3=[1+alpha3, -2*beta*(1+alpha3), 1+alpha3];
a3=[2,-2*beta*(alpha3+1),2*alpha3];
[H1,w]=freqz(b1,a1,100);
[H2,w]=freqz(b2,a2,100);
[H3,w]=freqz(b3,a3,100);
subplot(2,1,1);
plot(w/pi,abs(H1),'b--',w/pi,abs(H2),'r-',w/pi,abs(H3),'g');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
subplot(2,1,2);
plot(w/pi,angle(H1),'b--',w/pi,angle(H2),'r',w/pi,angle(H3),'g-');
legend('alpha=0.9','alpha=0.7','alpha=0.4');
Mạch lọc chắn dải
1
alpha=0.9
alpha=0.7
alpha=0.4
0.8
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
2
alpha=0.9
alpha=0.7
alpha=0.4
1
0
-1
-2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
SỬ DỤNG MATLAB ĐỂ THIẾT KẾ BỘ LỌC SỐ