Ссылаясь на классическую цифровую обработку сигналов 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