Tín hiệu và hệ thống
100
9.6. ÑAÙP ÖÙNG XUNG
Đáp ứng xung của bộ lọc là chuỗi tín hiệu ngõ ra của bộ lọc khi đưa vào bộ lọc tín hiệu xung
đơn vị:
⎩
⎨
⎧
≠
=
=
0
0
0
1
)
(
n
n
n
x
(9.8)
Để tìm đáp ứng xung của một bộ lọc, ta có thể tạo một chuỗi xung đơn vị rồi dùng hàm filter:
>> imp = [1; zeros(49,1)];
>> h = filter(b,a,imp);
9.7. ÑAÙP ÖÙNG TAÀN SOÁ
Signal Processing Toolbox cho phép thực hiện các phép phân tích trong miền tần số đối với
cả bộ lọc tương tự lẫn bộ lọc số.
9.7.1. TRONG MIEÀN SOÁ
Trong miền số, đáp ứng tần số được tính toán bằng giải thuật FFT. Hàm freqz sẽ trả về đáp
ứng tần số phức (FFT) p điểm của bộ lọc số có các vector hệ số là a và b.
>> [H,W] = freqz(b,a,p)
H là đáp ứng tần số của bộ lọc được tính tại p điểm tần số cho bởi vector W. Các điểm tần số
được chọn cách đều nhau và nằm ở nửa trên của vòng tròn đơn vị.
m
j
j
n
j
j
j
e
m
a
e
a
a
e
n
b
e
b
b
e
H
ω
ω
ω
ω
ω
−
−
−
−
+
+
+
+
+
+
+
+
=
)
1
(
)
2
(
)
1
(
)
1
(
)
2
(
)
1
(
)
(
…
…
(9.9)
Ngoài ra, còn có thể cung cấp cho hàm freqz các thông số khác. Sau đây là các cú pháp khác
của hàm:
>> [h,w] = freqz(b,a,n,'whole')
tính đáp ứng tần số tại n điểm phân bố đều trên toàn
bộ vòng tròn đơn vị.
>> h = freqz(b,a,w)
tính đáp ứng tần số tại các điểm xác định bởi vector w.
>> [h,f] = freqz(b,a,n,fs)
hoặc
[h,f] = freqz(b,a,n,'whole',fs)
tính đáp ứng
tần số n điểm của bộ lọc với tần số lấy mẫu là fs. n điểm tần số phân bố đều trên khoảng [0,
fs/2] (hoặc [0,fs] nếu dùng ‘whole’).
>> h = freqz(b,a,f,fs)
tính đáp ứng tần số tại các điểm xác định bởi vector f, trong đó fs
là tần số lấy mẫu.
Nếu gọi hàm freqz mà không yêu cầu trả về các thông số ra, hàm freqz sẽ vẽ đáp ứng biên độ
và đáp ứng pha của bộ lọc.
Lưu ý:
trong MATLAB thường sử dụng các giá trị tần số chuẩn hoá, trong đó tần số đơn vị là
tần số Nyquist, tức một nửa tần số lấy mẫu. Muốn chuyển từ tần số chuẩn hoá sang tần số góc
quanh vòng tròn đơn vị, chỉ cần nhân với
π, muốn chuyển từ tần số chuẩn hoá sang tần số
Hertz, nhân với một nửa tần số lấy mẫu.
Ví dụ 9-4. Tính và vẽ đáp ứng tần số 256 điểm của bộ lọc Butterworth bậc 9, tần số cắt
400Hz. Biết tần số lấy mẫu là 2000Hz.
[b,a] = butter(9,400/1000); % Các hệ số của bộ lọc Butterworth
[h,f]= freqz(b,a,256,2000); % Đáp ứng tần số