Những yếu tố nào tôi nên xem xét khi chọn thực hiện bộ lọc IIR?


16

Bộ lọc IIR có thể được thực hiện dưới dạng trực tiếp 1 hoặc 2 . Nhưng làm thế nào để bạn quyết định sử dụng hình thức? Những ưu và nhược điểm của mỗi là gì?


Hơn nữa, cách tốt nhất để thực hiện chúng trên GPU là gì.
Royi

2
@Drazick, GPU là một trò chơi hoàn toàn khác. đòi hỏi một quesiton khác.
Trevor Boyd Smith

Câu trả lời:


9

Trước hết, một chút từ wikipedia về triển khai Mẫu trực tiếp I và II .

Hình thức trực tiếp I đòi hỏi nhiều bộ nhớ hơn, nhưng là một chiến lược có phần đơn giản hơn và ít có khả năng gặp vấn đề về vòng và cộng hưởng.

Dạng trực tiếp II đòi hỏi ít bộ nhớ hơn, nhưng nó có khả năng tương tác bất thường, số lượng lớn hơn và lỗi làm tròn nhiều hơn. Phần lớn điều này có thể được giảm bằng cách xếp tầng các bộ lọc nhỏ hơn, đặc biệt là các bộ lọc thứ 2.


2
Trong cả hai trường hợp, bạn nên xếp tầng thứ hai.
Oliver Charlesworth

1
Vì vậy, trong ngắn hạn, đó là bộ nhớ và đánh đổi lỗi làm tròn?
anasimtiaz

2
IMO trả lời siêu yếu. Về mặt kỹ thuật, nó trả lời câu hỏi ... nhưng chỉ "về mặt kỹ thuật". Tôi muốn xem một số mã nguồn trong một ngôn ngữ. Tôi biết cách triển khai bộ lọc FIR thật dễ dàng. Hãy xem mã nguồn IIR.
Trevor Boyd Smith

2
Ngoài ra, về mặt các hoạt động toán học được thực hiện trên mỗi mẫu, đó là triển khai I hoặc II tốt hơn?
anasimtiaz

1
tôi biết cách lọc FIR. tôi cũng biết hình thức trực tiếp I / II / III / IV là gì. những gì tôi không có kinh nghiệm làm là IIR: thiết kế hoặc thực hiện. Nhận xét ban đầu của tôi không mang tính xây dựng. Tôi nên nói "Tôi hiểu thế nào là mẫu I-IV trực tiếp, bạn có vui lòng nói thêm về cách bạn thiết kế / triển khai bộ lọc IIR không?"
Trevor Boyd Smith

9

Một chút hẹn hò nhưng có thể xứng đáng có một câu trả lời toàn diện hơn, đặc biệt là vì Mẫu trực tiếp II có thể khiến bạn gặp nhiều rắc rối. Trước hết, không có "một kích thước phù hợp với tất cả" và sự lựa chọn tốt nhất phụ thuộc vào ứng dụng và ràng buộc cụ thể của bạn. Những gì bạn có thể xem xét là

  1. Bộ nhớ: Mẫu trực tiếp II và Mẫu chuyển đổi II chiếm ít bộ nhớ trạng thái hơn Mẫu trực tiếp I và Mẫu chuyển đổi I nhưng trong phần thực hiện phần thứ hai xếp tầng, sự khác biệt là nhỏ
  2. MIPS: Về số lượng nhân và bổ sung, cả bốn triển khai đều giống nhau. Tuy nhiên tùy thuộc vào tập lệnh của bộ xử lý cụ thể, có thể có sự khác biệt đáng kể về hiệu quả thực hiện. Vì vậy, "nó phụ thuộc".
  3. Thuộc tính điểm cố định: Điều này làm cho một sự khác biệt rất lớn. Chủ yếu bạn phải đảm bảo rằng các biến trạng thái của bạn không tràn nên bạn cần phân tích hàm truyền giữa in / output và biến trạng thái. Ở đây Mẫu trực tiếp I và Mẫu chuyển tiếp II là những người chiến thắng rõ ràng. Các biến trạng thái được liên kết với + 106dB hoặc khoảng đó so với đầu vào và đầu ra. Ví dụ, trong Mẫu II trực tiếp, chức năng chuyển từ đầu vào sang trạng thái chỉ được đưa ra bởi các cực. Tôi đã thấy các ví dụ trong thế giới thực, nơi điều này thực sự có thể vượt quá 100 dB mức tăng. Đây là một điều tuyệt đối không để thực hiện điểm cố định.
  4. Tiếng ồn: Về mặt cắt ngắn và làm tròn lỗi, tất cả các cài đặt đều gần giống nhau. Vấn đề về chức năng chuyển biến trạng thái được đề cập trong 3) cũng ảnh hưởng đến vấn đề này đối với một số phần mở rộng và tôi đã thấy các vấn đề tiếng ồn có thể nghe được với các bộ lọc Direct Form II ngay cả khi sử dụng điểm nổi 32 bit.

Vì vậy, tóm lại Transposed Form II thường xuyên hơn không phải là sự lựa chọn tốt nhất. Trong một số trường hợp điểm cố định, đặc biệt là nếu có vấn đề tiếng ồn đáng kể Direct Form I tốt hơn vì nó có thể dễ dàng tăng cường hơn với những thứ như Định hình phổ lỗi, v.v.


Đây là một câu trả lời toàn diện hơn và tốt hơn!
Lorem Ipsum

2
Tôi đã tìm ra ngày hôm nay - theo một cách khó khăn hơn nhiều - tại sao Direct Form I là lựa chọn tốt hơn cho ứng dụng của tôi. Cảm ơn cho một câu trả lời thực sự tốt!
anasimtiaz

1

Trừ khi bạn làm việc với một hệ thống rất khan hiếm tài nguyên hoặc có những yêu cầu cực đoan, thực tế không có vấn đề gì trong thực tế cho dù bạn chọn hình thức trực tiếp I hay II. Chẳng hạn, nếu bạn đang làm việc trên PC hoặc điện thoại thông minh thì điều đó thực sự không quan trọng. Cá nhân, tôi thích Mẫu I.

Vấn đề thực sự thường là MIPS và nếu bạn có kế hoạch thực hiện một điểm cố định thì mọi thứ trở nên phức tạp hơn. Chẳng hạn, trên ARM, bộ lọc IIR của bạn sẽ tiêu thụ nhiều MIPS hơn nếu cả hai hệ số và trạng thái bộ lọc là 32 bit. 32 bit ở trạng thái và hệ số là một yêu cầu nếu bạn cần triển khai ví dụ bộ lọc thông thấp với tần số cắt rất thấp. Trong những trường hợp đó, bạn có thể sử dụng một loại bộ lọc khác, chẳng hạn như bộ lọc biến trạng thái.


1

Bên cạnh những khác biệt về kỹ thuật như độ chính xác về số, còn có vấn đề về sự ổn định. Khi các bộ lọc kỹ thuật số có các cặp cực / không gần nhau, đáp ứng tần số có thể trở nên không ổn định tại các vị trí khác nhau (thường tiếp cận Nyquist hoặc tiếp cận 0).

Khi các bộ lọc IIR được sử dụng cho các ứng dụng âm nhạc, việc lựa chọn thực hiện có thể có ảnh hưởng sâu sắc đến độ ổn định của bộ lọc khi các tham số bộ lọc được điều chỉnh trong thời gian thực (ví dụ: thay đổi tần số cắt trên bộ lọc thông thấp).

Tôi có một ứng dụng nguồn mở cho phép bạn lắng nghe sự khác biệt, trong khi các tham số thay đổi theo thời gian như tần số cắt hoặc mức tăng cực đại, của từng nhận thức sau:

  • Mẫu trực tiếp I
  • Mẫu trực tiếp II
  • Chuyển đổi trực tiếp mẫu I
  • Chuyển trực tiếp mẫu II
  • Mẫu mạng
  • Biến số đưa ra

Dự án ở đây:

https://github.com/vinniefalco/DSPFiltersDemo.git

https://github.com/vinniefalco/DSPFilters.git

Ảnh chụp màn hình


1
Bạn đã đăng bài này nhiều lần và tôi có xu hướng thực thi chính sách spam trừ khi câu trả lời của bạn thực sự phù hợp với câu hỏi. Không có bài viết nào trong số này trả lời câu hỏi trực tiếp, và cũng quảng bá một sản phẩm. Chỉnh sửa chúng để trực tiếp trả lời các câu hỏi hoặc chúng sẽ bị xóa.
Phonon

0

Ngoài các ý kiến ​​trên về bộ nhớ, MIPS, tiếng ồn và tính ổn định; có một yếu tố khác thường bị bỏ qua. Yếu tố này là khả năng thiết lập lại; điều này xảy ra rất quan trọng trong hầu hết các tình huống của tôi.

Với triển khai Direct Form II, không có trạng thái nào cho các đầu ra bị trì hoãn, do đó nếu bạn "đặt lại" bộ lọc Direct Form II thành "5", thì đầu ra ban đầu sẽ không phải là 5. Tôi thấy điều này hoàn toàn trái ngược - Trực quan đã gây ra một số thất vọng nghiêm trọng khi sử dụng Simulink. Vì lý do này, tôi hầu như luôn sử dụng triển khai Mẫu trực tiếp I. Thật không may, Simulink chỉ hỗ trợ Biểu mẫu trực tiếp I nếu bạn có hộp công cụ DSP và thậm chí sau đó nó vẫn không cho phép bạn đặt các điều kiện ban đầu từ tín hiệu đầu vào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.