Ссылаясь на классическую цифровую обработку сигналов Bellanger - теория и практика , дело не в том, где находится ваша частота отсечки, а в том, какое затухание вам нужно, сколько пульсаций в сигнале, который вы хотите сохранить, вы можете терпеть и, что наиболее важно, как сузить ваш переход от pass- to stopband (ширина перехода) должен быть.
Я предполагаю, что вам нужен линейный фазовый фильтр (хотя вы указываете минимальную задержку, я не думаю, что минимальный фазовый фильтр - это хорошая идея, в общем, если вы не знаете, что вы собираетесь делать со своим сигналом впоследствии) , В этом случае порядок фильтрации (который является числом нажатий)
N≈23log10[110δ1δ2]fsΔf
с
fsΔfδ1δ2 the sampling rate the transition width, ie. the difference between end of pass band and start of stop band the ripple in passband, ie. "how much of the original amplitude can you afford to vary" the suppresion in the stop band.
Давайте подключим некоторые цифры! Вы указали частоту среза fs100 , так что я просто пойду и буду утверждать, что ширина вашего перехода не будет больше половины этого значения, поэтомуΔf=fs200 .
Исходя из технологии SDR / RF, подавление 60 дБ обычно вполне достаточно - аппаратное обеспечение, без сумасшедших затрат, не будет лучше в предотвращении нежелательных сигналов от вашего входа, так что, давайте не будем тратить ЦП на фантастический фильтр, который лучше чем то, что может сделать ваше оборудование. Следовательно, δ2=−60 dB=10−3 .
Допустим, вы можете жить с изменением амплитуды в полосе пропускания 0,1% (если вы можете жить с большим, также подумайте о том, чтобы сделать требование подавления менее строгим). Это δ1=10−4 .
Итак, подключив это:
NФильтр Томми≈ 23журнал10[110 δ1δ2]еsΔ Fзнак равно23журнал10[110 ⋅ 10- 4⋅ 10- 3]еsеs200знак равно23журнал10[110 ⋅ 10- 7]200знак равно23журнал10[ 110- 6]200знак равно23( журнал10106)200знак равно23⋅ 6 ⋅ 200= 800 .
Итак, с вашими 200 ответвлениями вы далеко, если вы используете в своем фильтре чрезвычайно узкую полосу пропускания, как я и предполагал.
Обратите внимание , что это не имеет быть проблемой - прежде всего, фильтр 800-отводы это страшно, но , честно говоря, только на первый взгляд:
- Как я проверял в этом ответе в StackOverflow : ЦП в настоящее время работают быстро , если вы используете чью-то оптимизированную для ЦП реализацию FIR. Например, я использовал реализацию FFT-FIR в GNU Radio с приведенным выше описанием спецификации фильтра. Я получил производительность в 141 миллион выборок в секунду - этого может быть или не быть достаточно для вас. Итак, вот наш тестовый пример для конкретного вопроса (который занял у меня несколько секунд):
- MMM= 50120050= 24
- 96Канзасs«смешно141МИЗs упомянуто выше. Таким образом, время, потраченное на вычисление выходного сигнала фильтра, будет относиться только к потоковой передаче сигнала MS / s. Для DSP с автономными данными: ну, добавьте задержку к любому сигналу, который вы имеете параллельно с вашим фильтром для компенсации. (Если ваш фильтр имеет линейную фазу, его задержка будет вдвое меньше длины фильтра.) Это может иметь отношение к аппаратной реализации КИХ-фильтра.
- 1100
Для быстрой и очень практичной оценки мне нравится правило Фреда Харриса:
где:
Atten - желаемое затухание в дБ,
Это очень близко к тому, что вы получите для линейного фазового фильтра с пульсацией полосы пропускания 0,1 дБ. Я часто использую это эмпирическое правило, чтобы получить первое представление о количестве необходимых отводов, а затем изменяю путем итерации в процессе проектирования фильтра.
Также следует отметить: это практическое правило дает отличное представление о том, что действительно определяет количество отводов: затухание в полосе останова и крутизну полосы перехода (и пульсацию полосы пропускания, но обычно - по крайней мере для фильтров, которые мне приходилось проектировать для приложения беспроводной связи - требование ослабления будет доминировать над пульсацией). Таким образом, в вашем вопросе о том, как ограничить Fs / 100, отсутствует вопрос о том, как быстро вам нужно перейти на стоп-полосу.
Игра с этими числами также может продемонстрировать важность сокращения обработки с использованием методов децимации.
источник
Добавление к принятому ответу несколько дополнительных ссылок. Я не буду писать формулы, которые могут быть задействованы. Эти формулы в большинстве случаев дают правило или аппроксимации для начала. Вы можете возиться с этими цифрами для вашего реального дизайна.
Одним из основополагающих принципов проектирования Беллангера является: «О сложности вычислений в цифровых фильтрах», 1981, Proc. Евро. Conf. Теория схемотехники, М. Беллангер. Это довольно сложно получить, но это выполнимо . Интересно, что в нем также указываются формулы для оценки количества бит на коэффициент, что следует учитывать при конечно-арифметической реализации. Более доступная версия на французском языке: Evaluation of la complexité des filtersres numériques , 1982.
Несколько других формул собраны в Конечном дизайне фильтра импульсной характеристики , Справочник по цифровой обработке сигналов, 1993, Т. Самамаки.
Совсем недавно вы можете прочитать Точную оценку минимальной длины фильтра для оптимальных цифровых фильтров FIR , 2000, K. Ichige et al.
Наконец, в статье « Эффективное проектирование КИХ-фильтров с минимальными заказами фильтров с использованием 10-нормативной оптимизации» в 2014 г. утверждается проект, в котором заказ постепенно уменьшается.
источник
Основными практическими проблемами, о которых я могу подумать, будет количество частотных выборок, используемых при оптимизации, так как поведение между частотными выборками может вызвать нежелательные эффекты. Насколько удачной может стать посадка, зависит, конечно, от количества нажатий. Я думаю, вы могли бы сказать, что минимальное количество нажатий - это когда проблема становится неосуществимой. Таким образом, одним из решений будет решение проблемы выполнимости.
источник