Алгоритм фильтра низких частот второго порядка - PullRequest
0 голосов
/ 07 марта 2011

Мне нужно отфильтровать некоторый шум от сигнала, и простого фильтра первого порядка RC, похоже, недостаточно.Я искал вокруг, но я не нашел алгоритмы для других фильтров (хотя много примеров того, как это сделать с аналоговыми схемами).Может кто-нибудь определить, где я могу найти такие алгоритмы?Или хотя бы напишите здесь?

Для пояснения: я беру сигнал с осциллографа, и у меня только один цикл.Этот цикл выглядит примерно так:

125 * (x > 3 ? exp(-(x - 3) / 2) : exp(5*(x - 3)))

Теперь, сигнал не всегда имеет эту форму, и мне нужно вычислить производную сигнала, что легко, если не потому, что когда масштаб достаточно,каждая точка составляет 160 нано секунд) вы можете увидеть много шума.Итак, перед вычислением производных мне нужно расплющить сигнал.

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Если вы спрашиваете, как спроектировать фильтр более высокого порядка, чем простой первый порядок, как насчет выбора фильтра здесь: wiki on Filter_ (signal_processing)

Просто выдвигаю гипотезу о вашем вопросе, поэтому вот пара моментов проектирования.

1) Вы, вероятно, не хотите, чтобы в полосе пропускания была пульсация (переменное усиление), поскольку это исказило бы ваш сигнал.

2) Вероятно, вам не важно иметь пульсации в вашем стоп-диапазоне, так как в любом случае сигнал должен быть близок к 0.

3) Чем выше порядок фильтра, тем больше он выглядит как идеальный фильтр квадратной формы.

4) Чем выше спад, тем лучше вы хотите максимально быстро уменьшить шум за пределами полосы пропускания.

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

После того, как вы выберете фильтр, который хотите, основываясь на этих (и, возможно, других) соображениях, просто реализуйте его, используя некоторую топологию, подобную упомянутой здесь

0 голосов
/ 07 марта 2011

Вам необходимо хорошее определение вашего сигнала, хороший анализ вашего шума и четкое понимание различий между ними, чтобы определить, какие алгоритмы могут быть подходящими для удаления одного, а не удаления информации в другом.Затем вам нужно определить вычислительную среду (целочисленное или с плавающей запятой ALU, добавить и умножить циклы?) И установить вычислительный бюджет.Существует большая разница между БИХ второго порядка и гига-точечным БПФ.

Некоторые очень часто используемые цифровые фильтры 2-го порядка описаны в двухрядном руководстве RBJ .

0 голосов
/ 07 марта 2011

Имея лишь смутное описание ваших требований, трудно дать какие-либо конкретные предложения.

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

Было бы также полезно узнать, какой тип сигнала вы хотите фильтровать - аудио или что-то еще? Сколько бит на выборку?

...