Как я могу создать очень узкий фильтр?


15

Предположим, у меня есть аудиосигнал, сэмплированный при Гц, и я хотел бы разработать фильтр нижних частот, который изолирует все, что ниже ~ 60 Гц. В цифровом мире это фильтр нижних частот с полосой пропускания в [ - π4800060. Кроме того, полоса перехода должна быть разумной. Построение КИХ-фильтра для этого может иметь много отводов, что в конечном итоге влияет на точность. БИХ-фильтр тоже не идеален, потому что звук страдает от нелинейного фазового отклика в фильтрах, поэтому, если сигнал не отфильтрован, а затем перевернут и отфильтрован снова, это не совсем вариант.[-π400,π400]

Может ли вейвлет-преобразование быть лучше в этом, чем регулярная фильтрация в одном?


Есть ли причина, по которой вы не хотите уничтожать?
Лорем Ипсум

Нет, уничтожение - это хорошо, пока я получаю то, что хочу.
Фонон

1
Что такое «разумная» переходная полоса? Это будет определять порядок вашего фильтра. Например, если ваш стоп-диапазон начинается с 300 Гц, вы, вероятно, в хорошей форме. Если вам нужно высокое затухание при частоте около 60,1 Гц, то оно будет длинным. Длинные КИХ-фильтры не обязательно плохи, хотя,
Джейсон R

5
Вам нужна актуальная спецификация фильтра, иначе вопрос не имеет смысла. Укажите допустимые колебания полосы пропускания, отклонение полосы пропускания, ширину полосы перехода и т. Д.
Пол Р.

Имеет смысл. Сделаю.
Фонон

Ответы:


20

Если вы оптимизируете время разработки и находитесь на платформе, которая хорошо поддерживает большие БПФ (т.е. не с фиксированной точкой), тогда прислушайтесь к совету hotpaw2 и используйте быструю свертку . Он будет работать намного лучше, чем простое внедрение FIR, и его будет относительно легко реализовать.

С другой стороны, если у вас есть время потратить на это, чтобы получить лучшую реализацию или вы используете платформу с фиксированной запятой, вы должны использовать многоскоростную структуру с понижением-фильтрацией-вычитанием. Но немного сложнее все сделать правильно.

У меня есть доступ к надежным и высоко оптимизированным реализациям инструментов быстрой свертки и многоскоростной фильтрации. Быстрая свертка занимает примерно в 3 раза больше времени, чтобы получить эквивалентную производительность сигнала по сравнению с многоскоростной структурой. Кроме того, это даже на платформе с плавающей запятой. Разрыв значительно увеличился бы на фиксированной точке dsp.

В общих чертах:

Вниз-преобразование:

Используйте 8 ступеней полуполосных фильтров с десятичным разделением на 2, чтобы преобразовать сигнал 48 кГц в сигнал 187,5 Гц. Первая стадия этой понижающей дискретизации может иметь очень широкую полосу переходов, позволяющую энергии для псевдонима, пока она не возвращается в диапазон ниже 60 Гц. По мере продвижения этапов число отводов должно увеличиваться, но они будут применяться с постепенно снижающейся частотой дискретизации, поэтому общая стоимость каждого этапа остается небольшой.

Фильтрация:

Выполните жесткую фильтрацию на 60 Гц, чтобы сохранить энергию, которую вы в конечном итоге захотите вычесть. Есть двойное преимущество в том, чтобы выполнять жесткую фильтрацию с низкой скоростью:

  1. 1 Гц полосы пропускания перехода в 256 раз больше с точки зрения цифровой частоты при низкой скорости по сравнению с исходной скоростью. Таким образом, каждое нажатие вашего фильтра в 256 раз мощнее.
  2. Сам сигнал имеет более низкую скорость, поэтому фильтру нужно только обработать 1/256 данных.

Up-преобразования:

По сути, это обратная стадия прореживания. Каждый из 8 этапов интерполяции удваивает скорость, оценивая выборку, которая проходит между последовательными входными выборками. Полоса перехода становится шире по мере увеличения частоты дискретизации.

Вычесть:

Вычтите ваш низкочастотный отфильтрованный сигнал с полной скоростью из исходного сигнала. Если вы правильно настроили все групповые задержки, общая структура будет представлять собой фильтр верхних частот с узкой полосой пропускания перехода.


Это фантастический ответ. Могу ли я оставить ваши комментарии к этому посту? dsp.stackexchange.com/questions/29655/…
richieqianle

6

Попробуйте использовать сверточный фильтр наложения «добавить / сохранить» с самым длинным FFT / IFFT, который соответствует вашим задержкам и ограничениям производительности вычислений. Вы можете создавать очень длинные КИХ-фильтры, используя этот метод с еще более длинными БПФ.

Если вы можете выполнить БПФ всю песню или весь файл звукового сигнала в одном очень длинном БПФ + IFFT (есть специальные алгоритмы БПФ для длинных векторов, которые не помещаются в dcache или RAM), вам не нужно будет делать какие-либо Перекрыть процесс добавления / сохранения, и вы можете получить очень узкую полосу перехода.


4

Очевидно, есть два варианта: FIR и IIR. Как уже говорилось, FIR требует ОЧЕНЬ длинного (1000 с отводов) импульсного отклика и является дорогостоящим с точки зрения памяти, MIPS и задержка с добавлением / сохранением с перекрытием являются наиболее эффективным выбором. Тем не менее, задержка может быть реальной проблемой. Если вы хотите использовать его в качестве высокочастотного сигнала для сабвуфера домашнего кинотеатра, задержка будет настолько высокой, что вы потеряете синхронизацию губ с видео.

БИХ на несколько порядков дешевле и поэтому часто используется. Он действительно имеет неплоский фазовый отклик, но во многих случаях это не проблема или его можно обойти. Например, если вам нужен фильтр верхних частот для защиты драйверов в басовом боксе, фазовый отклик не очень важен, так как в общем фазовом отклике системы преобладают драйвер, корпус и акустика в комнате. Фильтр играет здесь незначительную роль. Во многих случаях вам также необходимо поддерживать «относительную» фазу, а не абсолютную фазу. Допустим, вы хотите применить высокочастотный сигнал к сигналу A, но не к сигналу B, вы можете просто включить соответствующий сигнал полного прохода для сигнала B, чтобы относительная фаза A и B оставалась неизменной. Общая задержка и групповая задержка этого подхода все еще намного меньше, чем у метода FIR.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.