Thiết kế các bộ lọc
141
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
1
1.5
2
2.5
3
3.5
4
4.5
5
Tan so chuan hoa
B
ien d
o
Hình 10.10.
10.4. THÖÏC HIEÄN BOÄ LOÏC
Sau quá trình thiết kế bộ lọc, ta nhận được hai vector a và b chứa các hệ số của bộ lọc. Dựa
trên hai vector này, ta có thể thực hiện bộ lọc bằng cách dùng một trong hai hàm sau:
Hàm dfilt cho phép định nghĩa cấu trúc của bộ lọc và khởi tạo một đối tượng bộ lọc số
trong MATLAB.
Hàm filter với các thông số đầu vào là các vector a và b sẽ thực hiện bộ lọc với cấu trúc
chuyển vị trực tiếp dạng II và sử dụng nó để lọc tín hiệu vào. Nếu thông số đầu vào là đối
tượng tạo bởi hàm dfilt thì hàm filter sẽ thực hiện cấu trúc bộ lọc định nghĩa bởi dfilt và dùng
nó để lọc tín hiệu vào.
Việc lựa chọn cấu trúc bộ lọc để thực hiện nó phụ thuộc vào các nhiệm vụ cụ thể mà bộ lọc đó
phải thực hiện. Ví dụ nếu bộ lọc hoạt động ở tốc độ cao, ta nên dùng bộ lọc FIR không đệ quy
thay vì dùng bộ lọc IIR đệ quy; các bộ lọc IIR cấu trúc trực tiếp thường được thực hiện dưới
cấu trúc các khâu bậc 2 (SOS) vì nó rất nhạy với nhiễu do làm tròn số khi tính toán.
Cú pháp của hàm filter đã được đề cập ở chương 9. Do đó ở đây chỉ trình bày cú pháp của
hàm dfilt. Biết trước các hệ số của bộ lọc, hàm dfilt sẽ tạo ra một đối tượng bộ lọc số với cấu
trúc do người sử dụng xác định. Với đối tượng này, ta có thể thực hiện các tác vụ khác nhau
như tính đáp ứng tần số, độ trễ nhóm, ... hoặc cũng có thể dùng đối tượng này làm nhập liệu
cho hàm filter để thực hiện lọc các tín hiệu.
Để khởi tạo đối tượng bộ lọc số, ta dùng cú pháp:
>> Hd = dfilt.STRUCTURE(input1,input2,...)
trong đó STRUCTURE là tên cấu trúc bộ lọc mà ta muốn thực hiện. Ví dụ, tạo đối tượng bộ
lọc có cấu trúc chuyển vị trực tiếp dạng 2:
>> Hd = dfilt.df2t(b,a);