Тестирование фильтра нижних частот - PullRequest
2 голосов
/ 01 февраля 2012

Какой простой способ проверить, работает ли мой фильтр нижних частот?Я нахожусь в процессе разработки фильтра нижних частот и хотел бы провести тесты на нем относительно простым способом.

В настоящее время я открываю файл WAV и помещаю все образцы вмассив целыхЗатем я запускаю массив через фильтр нижних частот, чтобы создать новый массив.Какой простой способ проверить, работает ли фильтр нижних частот?

Все это сделано в C.

Ответы [ 5 ]

9 голосов
/ 01 февраля 2012

Вы можете использовать широкополосный сигнал, такой как белый шум, для измерения частотной характеристики:

  • генерация входного белого шума
  • пропустить сигнал белого шума через фильтр
  • извлекает БПФ из фильтра
  • вычислить логарифм FFT
  • логарифм магнитуды

Вместо того, чтобы все это кодировать, вы можете просто вывести выходные данные из фильтра в текстовый файл и затем выполнить анализ, например, в. MATLAB или Octave (подсказка: используйте периодограмма ).

4 голосов
/ 01 февраля 2012

Зависит от того, что вы хотите проверить.Я не эксперт по DSP, но я знаю, что есть несколько вещей, которые можно измерить в вашем фильтре (если вы имеете в виду тестирование).

Если фильтр линейный, то вся информация о фильтре может бытьнайдено в импульсном отклике.Прочитайте об этом здесь: http://en.wikipedia.org/wiki/Linear_filter

Например, если вы возьмете преобразование Фурье импульсного отклика, вы получите частотный отклик.Частотная характеристика легко говорит вам, стоит ли фильтр нижних частот его имени.

Возможно, я недооцениваю ваши знания о DSP, но я рекомендую вам прочитать книгу на этом сайте: http://www.dspguide.com. Этоочень доступная книга без сложной математики.Она доступна в виде настоящей книги, но вы также можете прочитать ее онлайн бесплатно.

РЕДАКТИРОВАТЬ: После прочтения, я убежден, что каждый программист, который когда-либо прикасается к АЦП, обязательно должен сначала прочитать эту книгу.Я обнаружил, что в прошлых проектах я делал много трудных вещей, которые я мог бы сделать в тысячу раз лучше, когда у меня было немного больше знаний о DSP.В большинстве случаев неопытный программист делает DSP, не зная этого.

2 голосов
/ 01 февраля 2012

Создайте два монотонных сигнала, один из которых низкочастотный, а другой - высокочастотный. Затем запустите свой фильтр на двух. Если это работает, то низкочастотный сигнал должен быть неизменен, тогда как высокочастотный сигнал будет отфильтрован.

0 голосов
/ 02 февраля 2012

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

В зависимости от того, насколько вы уверены в себе, вам даже не нужно этого делать. Вы можете просто обработать линейную развертку и увидеть, что она ослабила более высокие частоты.

0 голосов
/ 01 февраля 2012

Вы должны иметь возможность программно генерировать тоны (синусоидальные волны) различных частот, вставлять их во входной массив, а затем сравнивать энергию сигнала путем суммирования квадратов значений массивов (и деления на длину, хотя это математически здесь нет необходимости, потому что сигналы должны быть одинаковой длины). Отношение выходной энергии к входной энергии дает вам усиление фильтра. Если ваш LPF работает правильно, усиление должно быть близко к 1 для низких частот, близко к 0,5 на частоте полосы пропускания и близко к нулю для высоких частот.

Примечание. Существуют различные (но по сути одинаковые по духу) определения «пропускной способности» и «усиления». Метод, который я предложил, должен быть относительно нечувствительным к переходному отклику фильтра, потому что он, по сути, усредняет интенсивность сигнала, хотя вы могли бы улучшить его, игнорируя первые T выборок входа, где T связано с полосой пропускания фильтра. , В любом случае, убедитесь, что сигналы длинные по сравнению с инверсией полосы пропускания фильтра.

...