Дизайн фільтра FIR: Вікно проти парків МакКлеллан та найменші квадрати


21

Чи є якісь переваги для використання віконного підходу над Parks-McClellan (далі тут скорочено PMcC) або алгоритмами найменших квадратів для проектування фільтра FIR фільтра низьких частот? Припустимо з сьогоднішньою обчислювальною потужністю, що складність самих алгоритмів не є фактором.

Це питання не порівнює PMcC з найменшими квадратами, але конкретно, якщо є якісь підстави використовувати будь-яку техніку проектування віконних FIR замість цих алгоритмів, чи були методи віконцети для фільтрації застарілих за цими алгоритмами та відхилених до дидактичних цілей?

Нижче наведено одне порівняння, де я порівняв вікно Хеммінга з моїм прихильним дизайнерським підходом із найменшим квадратом, використовуючи однакову кількість кранів. Я розширив смугу пропускання в підході до найменшого квадрату, щоб тісно відповідати вікні Хеммінга, і в цьому випадку було цілком зрозуміло, що найменший квадрат випереджає (пропонуючи значно більше відхилення смуги зупинки). Я не робив цього з усіма вікнами, що призводить мене до питання, чи могли б ви коли-небудь перевиконати PMcC і найменші квадрати, чи є інші додатки для фільтрів низьких частот FIR, де переважніший підхід до вікон?

введіть тут опис зображення


2
Я можу запропонувати порівняти синхронізований сік з Kaiserfirpm() та to firls().
Роберт Брістоу-Джонсон

Відповіді:


16

Я погоджуюсь, що метод проектування фільтрів віконних виробів вже не є одним з найважливіших методів проектування, і, справді, це може бути так, що він є надмірно представленим у традиційних підручниках, ймовірно, з історичних причин.

Однак я вважаю, що його використання може бути виправданим у певних ситуаціях. Я не згоден, що обчислювальна складність вже не є проблемою. Це залежить від платформи. Сидячи за нашим настільним комп’ютером і проектуючи фільтр, нам справді не потрібно турбуватися про складність. Однак на конкретних платформах і в ситуаціях, коли дизайн потрібно робити в квазі-реальному часі, обчислювальна складність є проблемою, і проста технологія неоптимального проектування буде віддавати перевагу оптимальній техніці, яка набагато складніша. Як приклад, я колись працював над системою для формування променів, де фільтр (формуючий промінь) потрібно було б переробити на льоту, і тому обчислювальна складність справді була проблемою.

Я також переконаний, що у багатьох практичних ситуаціях нам не потрібно турбуватися про різницю між оптимальним та неоптимальним дизайном. Це стає ще більш вірним, якщо нам потрібно використовувати арифметику з фіксованою точкою з квантованими коефіцієнтами та квантованими результатами арифметичних операцій.

Інше питання - чисельна стійкість оптимальних методів проектування фільтрів та їх реалізація. Я натрапив на кілька випадків, коли алгоритм Паркс-МакКлеллан (я повинен сказати, реалізація, яку я використав) просто не збігався. Це станеться, якщо специфікація не має великого сенсу, але це може трапитися і з цілком розумними характеристиками. Те ж саме стосується методу проектування найменших квадратів, коли потрібно вирішити систему лінійних рівнянь, що може стати проблемою, що не обумовлена. За цих обставин метод вікон ніколи вас не підведе.

Зауваження про ваше порівняння між методом вікон та дизайном найменших квадратів: я не думаю, що це порівняння показує якусь загальну перевагу методу найменших квадратів над методом вікон. По-перше, вам здається, що ви дивитесь на загасання смуги зупинки, що не є метою проектування жодного з двох методів. Метод вікон в будь-якому сенсі не є оптимальним, а дизайн з найменшими квадратами мінімізує енергію стоп-діапазону і зовсім не переймається розміром пульсацій смуги зупинки. Що можна помітити, це те, що край смуги проходу конструкції вікна більший, ніж один з найменших дизайнів квадратів, тоді як край смуги зупинки менший. Отже, ширина смуги переходу фільтра, розробленого за допомогою вікон, менша, що призведе до більш високих пульсацій смуги зупинки. Різниця в ширині смуги переходу може бути невеликою, але властивості фільтра дуже чутливі до цього параметра. Немає сумнівів, що фільтр з найменшими квадратами перевершує інший фільтр, коли справа доходить до зупинки енергії смуги, але це не так просто зрозуміти, як розмір пульсацій. І залишається питання, чи ця різниця насправді змінить практичне застосування.

Дозвольте мені показати, що такі порівняння часто можна зробити так, щоб вони виглядали так, як хотілося б. На малюнку нижче я порівнюю оптимальний фільтр низьких частот з мінімальними квадратами, розроблений за допомогою функції Matlab / Octave firls.m(синій), та фільтр низьких частот, розроблений методом вікон за допомогою вікна Kaiser (червоний).

введіть тут опис зображення

З рисунка можна навіть зробити висновок, що фільтр, розроблений вікном, трохи кращий, ніж фільтр з найменшими квадратами. Це, звичайно, не має сенсу, оскільки ми навіть не визначили «краще», а фільтр найменших квадратів повинен мати меншу середню помилку наближення у квадраті. Однак цього ви не бачите прямо на малюнку. У будь-якому випадку, це лише на підтвердження мого твердження, що треба бути дуже обережним і чітким при проведенні таких порівнянь.

Підсумовуючи, крім того, що корисно вчитися студентам ДСП з чисто дидактичних причин, я вважаю, що, незважаючи на технологічний прогрес з 1970-х років, використання методу вікна може бути виправданим у певних практичних сценаріях, і я не думаю, що це буде зміниться дуже скоро.


Гарна відповідь Метт - Пара роз’яснення / питання: Що стосується складності, чи можете ви знайти справжній приклад? Я можу бачити, що це проблема з реалізацією, але, придумуючи коефіцієнти, я не можу придумати причину, яку б я зробив дизайн на нижчій платформі (звідси і моє запитання). Щодо порівняння, то найменше квадратів явно краще; для одного і того ж пульсації та переходу ви отримуєте краще ослаблення смуги зупинки. Я збільшив ширину пропускної смуги, щоб відповідати двом; край трохи більший, тому я зупинив збіг, але міг би відповідати ближче до висновку.
Дан Бошен

2
@DanBoschen: Звичайно, у більшості випадків дизайн робиться в автономному режимі, а складність не є проблемою. Однак я натрапив на додатки, де фільтри потрібно було б переробити в квазіреальному часі (це була програма для формування променя), тому там у вас є питання складності.
Метт Л.

1
А що стосується фактичної економії кількості кранів оптимальною конструкцією порівняно з конструкцією вікон, то результати, які я бачив, часто невтішні. Часто достатньо лише 1 або 2 кранів, що для багатьох реалізацій не мало би значного значення.
Метт Л.

1
Гаразд, для офлайн-дизайнів, і якщо чисельна стабільність виявиться не проблемою (для цієї конкретної конструкції; загалом це залишається проблемою), віконце не буде корисним. Але загалом ми не завжди можемо покластися на офлайн-дизайни, і що ще важливіше, ми не завжди можемо уникнути числових проблем. Тому я думаю, що слово "застаріле" все ще трохи надто сильне.
Метт Л.

3
Дуже добре сказано. Що слід пам’ятати, це те, що в інженерії йдеться про те, щоб знайти реалізацію, достатню для того, щоб відповідати вашим вимогам. Віконний метод простий у реалізації та завжди працює. Інші методи мають складніші реалізації та можуть мати випадки, коли з ними складно працювати. Я працював з декількома системами, які потребують розробки фільтрів на ходу, і метод вікон - це найкраще для цих ситуацій.
Джейсон R

7

Віконні фільтри Sinc можна адаптуватися в режимі льоту на процесорах, ледь достатньо потужних для запуску пов'язаного фільтра FIR. Віконні фільтри Sinc можна генерувати в обмежений час.

Покоління декількох простих фільтрів Sinc з вікном може бути повністю описано (і перевірено на предмет шкідливого програмного забезпечення тощо) у кількох рядках коду , порівняно з сліпим використанням деяких непрозорих інструментів.

Для пояснення віконного фільтра Sinc потрібен менше необхідний математичний фон, порівняно з тим, який потрібен для кодування генератора фільтрів PMcC з нуля.

Рівні пульсації у частотній характеристиці фільтра PMcC можуть спричинити артефакти у часовій області, які відрізняються (і, можливо, менш бажані), ніж артефакти, отримані простим фільтром з вікнами.


1
Так гарна точка @ hotpaw2, пульсація пропускної смуги призводить до міжсимвольних перешкод (трейлінг та провідні відлуння). Спасибі
Дан Бошен

2
Ми говорили про Паркс – МакКлеллан перед і після відлуння на comp.dsp у 2003 році . Олексій Лукін розмістив мінімальний MATLAB приклад:, f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)який також працює в Octave. Пояснення полягає в тому, що при дуже крутих фільтрах брижі можуть бути достатньо регулярними, щоб нагадувати косинус. Еквівалент часової області косинусу частотної області буде двома імпульсивними відлуннями.
Оллі Ніемітало

6

Я покажу тут одну перевагу віконної конструкції та трюк, щоб отримати таку ж користь від Парків – МакКлеллан.

Для напівдіапазонних, четвертополосних і т.д. Нулі закінчуються коефіцієнтами, зменшуючи обчислювальну вартість фільтрів. Для напівдіапазонного фільтра віконна конструкція дає фільтр з кожним парним коефіцієнтом 0, за винятком середнього коефіцієнта (який також вважається парним):

Синк
Рисунок 1. Функція Sinc, розтягнута горизонтально на коефіцієнт 2, являє собою прототипічний напівдіапазонний фільтр низьких частот із коефіцієнтом посилення 2, придатний для збільшення вибору на коефіцієнт 2.

Однак Паркс – МакКлеллан / Ремез може бути хитрим, щоб надати ті ж переваги, створивши за допомогою нього фільтр з парним числом дотиків із визначеною лише смугою посилення прохідності. Отримані коефіцієнти використовуються як непарні коефіцієнти більш тривалого фільтра. Середній середній коефіцієнт довшого фільтра встановлюється на 1, а інші рівні коефіцієнти - на 0. Цей фільтр має коефіцієнт підсилення 2 у смузі проходу та симетричну пульсацію в смугах проходу та зупинки. На Python:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

Малюнок 2.
Малюнок 2. Коефіцієнти напівдіапазонного фільтра, спроектованого опосередковано за допомогою Python's scipy.signal.remez.

Малюнок 3.
Малюнок 3. Діаграма частоти відгуку величини напівдіапазонного фільтра, розробленого непрямим використанням scipy.signal.remez.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.