Tín hiệu và hệ thống
98
Hình 9.6.
Nguyên tắc thực hiện hàm upfirdn
Cấu trúc nói trên được thực hiện bằng kỹ thuật lọc nhiều pha (polyphase), đó là trọng tâm của
lý thuyết băng lọc đa tốc độ.
>> y = upfirdn(x, h, P, Q)
Để thực hiện một băng lọc gồm nhiều bộ lọc ta dùng hàm upfirdn, trong đó bộ lọc h là một
ma trận mà mỗi cột biểu diễn một bộ lọc FIR. Các tín hiệu ngõ ra cũng biểu diễn dưới dạng
ma trận.
9.5.2. KHÖÛ MEÙO PHA CHO BOÄ LOÏC IIR
Trong trường hợp bộ lọc FIR, ta có thể thiết kế bộ lọc có pha tuyến tính, dữ liệu ra chỉ lệch so
với dữ liệu vào một số lượng ký hiệu cố định. Nhưng với bộ lọc IIR, méo pha thường có tính
chất phi tuyến cao. Thông thường, người ta sử dụng các thông tin về tín hiệu tại các thời điểm
trước và sau thời điểm hiện tại để khắc phục hiện tượng méo pha này. MATLAB xây dựng
hàm filtfilt để thực hiện giải thuật nói trên.
Đầu tiên chúng ta khảo sát mô hình dưới đây. Chú ý rằng nếu biến đổi z của một chuỗi x(n) là
X(z) thì biến đổi z của chuỗi đảo ngược thời gian của x sẽ là X(1/z).
Hình 9.7.
Khi |z| = 1, tức là
ω
j
e
z
=
, tín hiệu ngõ ra trở thành
2
)
(
)
(
ω
ω
j
j
e
H
e
X
. Vậy nếu biết tất cả các
mẫu của tín hiệu x(n) thì sau hai lần lọc liên tiếp, ta được một tín hiệu có độ lệch pha bằng 0
so với x(n).
Ví dụ 9-3. So sánh hai phương pháp lọc dùng hàm filter và hàm filtfilt để thực hiện lọc một
tín hiệu sin có hai thành phần tần số 3Hz và 40Hz bằng bộ lọc trung bình 10 điểm.
fs = 100;
t = 0:1/fs:1;
x = sin(2*pi*t*3)+.25*sin(2*pi*t*40);
b = ones(1,10)/10; % 10 point averaging filter
y = filtfilt(b,1,x); % Noncausal filtering
yy = filter(b,1,x); % Normal filtering
plot(t,x,t,y,'--',t,yy,':')
legend('Tin hieu goc','Loc bang filfilt','Loc binh thuong')
Hình 9.8
là đồ thị thu được sau khi thực hiện chương trình.