Thiết kế các bộ lọc
124
Trong ví dụ 10.2, ta có thể rời rạc hoá bộ lọc tạo được bằng cách dùng hàm bilinear với tần
số lấy mẫu 2Hz:
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % chuyển về mô hình hàm truyền đạt.
Đáp ứng tần số của bộ lọc mới như sau:
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
-300
-240
-180
-120
-60
0
Normalized Frequency (
×π rad/sample)
Magni
tude (
d
B
)
Magnitude (dB) and Phase Responses
-900
-700
-500
-300
-100
100
P
h
as
e (
degr
ees
)
Hình 10.4.
Ta thấy rằng tần số cạnh trên của dải thông nhỏ hơn 0,5Hz mặc dù, đối với bộ lọc tương tự giá
trị này đúng bằng 0,5Hz. Nguyên nhân là do tính phi tuyến của bản thân phép biến đổi song
tuyến tính. Để khắc phục hiện tượng này, khi xây dựng bộ lọc tương tự, ta phải tính lại các tần
số ngưỡng của dải thông sao cho qua phép biến đổi song tuyến tính, nó chuyển một cách
chính xác thành các tần số mong muốn như trong ví dụ sau:
Ví dụ 10-3. Hiệu chỉnh lại ví dụ 10-2 đồng thời áp dụng phép biến đổi song tuyến tính để
thiết kế bộ lọc số Chebychev loại I, bậc 10, dải thông 0,1 – 0,5Hz, tần số lấy mẫu 2Hz.
[z,p,k] = cheb1ap(5,3); % Bộ lọc Chebychev loại I bậc 5, Rs = 3dB
[A,B,C,D] = zp2ss(z,p,k); % Chuyển sang dạng không gian trạng thái.
fs = 2; % Tần số lấy mẫu (hertz)
u1 = 2*fs*tan(0.1*(2*pi/fs)/2); % Tần số cắt thấp (rad/s)
u2 = 2*fs*tan(0.5*(2*pi/fs)/2); % Tần số cắt cao (rad/s)
Bw = u2 - u1; % Băng thông
Wo = sqrt(u1*u2); % Tần số trung tâm
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,2,0.1);
[bz,az] = ss2tf(Ad,Bd,Cd,Dd); % chuyển về mô hình hàm truyền đạt.
[h,f] = freqz(bz,az,256,2); % Tính đáp ứng tần số.
semilogy(f,abs(h)), grid % Vẽ đáp ứng biên độ.