Đây thực sự không phải là vấn đề cụ thể của MATLAB; Tôi thấy một vài câu hỏi chung hơn:
Làm thế nào để bạn thực hiện một bộ lọc IIR kỹ thuật số?
Bạn có thể áp dụng bất kỳ bộ lọc kỹ thuật số chung nào bằng cách kết hợp đáp ứng xung của nó với tín hiệu mà bạn muốn lọc. Trông giống như:
y[ n ] =Σk = 0N- 1x [ k ] h [ n - k ]
Điều này hoạt động rất tốt cho các bộ lọc FIR , nhưng bạn gặp phải các vấn đề phức tạp với các hệ thống IIR , vì các phản hồi xung của chúng dài vô tận ( trong tổng số trên). Điều đó làm cho đầu ra của bộ lọc khó tính toán bằng cách sử dụng tổng tích chập đơn giản ở trên. Để thực sự triển khai bộ lọc IIR, chúng ta cần một cách để thể hiện đầu ra của bộ lọc theo cách dễ tính toán hơn.N→ ∞
Thuộc tính của bộ lọc IIR làm cho đáp ứng xung của nó dài vô tận là bản chất đệ quy của hệ thống ; có phản hồi từ đầu ra trở lại đầu vào bộ lọc. Điều này có nghĩa là đầu ra của bộ lọc IIR tại bất kỳ thời điểm nào có thể phụ thuộc vào hai nguồn thông tin riêng biệt:
Tín hiệu đầu vào của bộ lọc, quá khứ và hiện tại, và
Giá trị quá khứ của tín hiệu đầu ra bộ lọc.
Điều này dẫn đến biểu diễn phương trình khác biệt của hệ thống IIR:
một0y[ n ] =Σk = 1M- 1mộtky[ n - k ] +Σk = 0N- 1bkx [ n - k ]
Biểu diễn này minh họa rằng chúng ta có thể triển khai bộ lọc IIR bằng cách tính tổng trọng số đầu ra của bộ lọc và đầu vào quá khứ của bộ lọc (trong thực tế, và có thể và thường giống nhau; thứ tự của bộ lọc khi được xác định như trên là ). Đây là biểu thức dạng đóng, nắm bắt hoàn toàn hành vi của bộ lọc, phù hợp để thực hiện tự động và là phương trình được tham chiếu trong đoạn trích trợ giúp MATLAB mà bạn đã trình bày trong câu hỏi của mình. Lưu ý rằng gần như chỉ được coi là bằng ; Tôi chỉ bao gồm nó bởi vì nó được hiển thị trong văn bản trợ giúp được trích dẫn, được tham chiếu làMNNMm a x ( M, N) - 1một01a(1)
.
Vì vậy, để trả lời cụ thể câu hỏi của bạn, như văn bản gợi ý, MATLAB triển khai các hệ thống IIR bằng phương trình trên. Khi bạn thiết kế một bộ lọc IIR với MATLAB hoặc cách khác, bạn sẽ có được hai bộ hệ số ( và trong phương trình khác biệt) mà xác định làm thế nào để cân đầu vào lọc qua và kết quả trong việc thực hiện bộ lọc. Có một số sự tinh tế khác đôi khi có liên quan; ví dụ, văn bản đề cập đến việc sử dụng bộ thực hiện "chuyển đổi dạng II trực tiếp" của bộ lọc. Sau đó, bạn áp dụng bộ lọc bằng cách tính phương trình sai phân ở trên cho từng mẫu đầu ra mong muốn.mộtkbk
Thực tế, có một số cấu trúc liên kết có thể được sử dụng để triển khai các bộ lọc kỹ thuật số, mỗi bộ lọc có sự đánh đổi riêng. DF2T thường được sử dụng do cấu trúc hiệu quả hơn của nó (nó chứa một số phần tử trễ tối thiểu) và độ mạnh được cải thiện của nó đối với lỗi làm (vì các hệ số tiếp theo được triển khai trước tiên).bk
MATLAB thiết kế bộ lọc Butterworth như thế nào?
Tài liệu cho butter
hàm không chỉ định cách nó tạo ra xấp xỉ rời rạc cho nguyên mẫu bộ lọc Butterworth tương tự . Tuy nhiên, bằng cách nhìn trộm vào butter.m
, bạn tìm thấy:
% step 5: Use Bilinear transformation to find discrete equivalent:
if ~analog,
[a,b,c,d] = bilinear(a,b,c,d,fs);
end
Vì vậy, có vẻ như nó sử dụng phép biến đổi song tuyến để ánh xạ nguyên mẫu bộ lọc Butterworth thành hiện thực bộ lọc kỹ thuật số.