Проектирование цифровых фильтров - очень большая и зрелая тема, и, как вы упомянули в своем вопросе, доступно много материалов. Здесь я хочу попробовать начать работу и сделать существующий материал более доступным. Вместо цифровых фильтров я должен говорить о фильтрах с дискретным временем, потому что я не буду здесь рассматривать коэффициент и квантование сигнала. Вы уже знаете о фильтрах FIR и IIR, а также о некоторых структурах фильтров, таких как DF I и II. Тем не менее, позвольте мне начать с некоторых основ:
Нерекурсивный линейный инвариантный по времени (LTI) фильтр может быть описан следующим разностным уравнением
Y( n ) = h0х ( н ) + ч1x ( n - 1 ) + … + hN- 1х ( н - н+ 1 ) = ∑к = 0N- 1часКх ( н - к )(1)
где - выходная последовательность, - входная последовательность, - индекс времени, - коэффициенты фильтра, а - длина фильтра (количество отводов). фильтра также являются импульсной характеристикой фильтра, потому что если входной сигнал является импульсным, т.е. , тоx ( n ) n h k N h k x ( n ) = δ ( n ) y ( n ) = h n h kY( н )х ( н )NчасКNчасКx ( n ) = δ( н )Y( n ) = hN(если память фильтра была инициализирована нулями). Уравнение (1) описывает линейную инвариантную по времени систему с конечной импульсной характеристикой (FIR). Сумма в правой части (1) является суммой свертки, то есть выходной сигнал получается путем свертки входного сигнала с импульсной характеристикой. Это всегда верно, но для БИХ-фильтров мы не можем явно вычислить сумму свертки, потому что импульсная характеристика бесконечно длинна, т.е. существует бесконечно много коэффициентовчасК, Одним из важных преимуществ FIR-фильтров является то, что они всегда стабильны, то есть для ограниченной входной последовательности выходная последовательность всегда ограничена. Другое преимущество состоит в том, что КИХ-фильтры всегда могут быть реализованы с точно линейной фазой, то есть они не добавят никаких фазовых искажений, кроме чистой задержки. Кроме того, проблема проектирования обычно проще, как мы увидим позже.
Рекурсивный фильтр LTI описывается следующим разностным уравнением:
Y( n ) = b0х ( н ) + б1x ( n - 1 ) + … + bMх ( н - М) -- а1Y( n - 1 ) - … - aNY( n - N)(2)
Уравнение (2) показывает, что выходные данные состоят не только из взвешенных и задержанных входных выборок, но также из взвешенных прошлых выходных выборок. В общем случае импульсная характеристика такой системы бесконечно велика, т.е. соответствующая система является системой БИХ. Однако существуют особые случаи рекурсивных фильтров с конечной импульсной характеристикой. Обратите внимание, что импульсный отклик больше не задается ни коэффициентами ни как в случае FIR-фильтров. Одним из преимуществ БИХ-фильтров является то, что крутые фильтры с высоким затуханием в полосе задерживания могут быть реализованы с гораздо меньшими коэффициентами (и задержками), чем в случае КИХ, то есть они являются более эффективными в вычислительном отношении. Однако нужно быть осторожным с выбором коэффициентовбКaКaК потому что БИХ-фильтр может быть нестабильным, то есть их выходная последовательность может быть неограниченной, даже с ограниченной входной последовательностью.
Фильтры могут быть сконструированы в соответствии со спецификациями либо во временной (выборочной) области, либо в частотной области, либо в обоих случаях. Поскольку вы упомянули частоту среза в своем вопросе, я предполагаю, что вас больше интересуют спецификации в частотной области. В этом случае вам нужно взглянуть на частотные характеристики систем FIR и IIR. Частотный отклик системы - это преобразование Фурье ее импульсного отклика, при условии, что он существует (что имеет место для стабильных систем). Частотная характеристика КИХ-фильтра
ЧАС( еJ θ) = ∑к = 0N- 1часКе- j k θ(3)
где - частотная переменная с дискретным временем:θ
θ = 2 πееs
с фактической частотой и частотой дискретизации . Из (3) видно, что аппроксимация желаемой частотной характеристики с помощью системы КИХ является в основном проблемой полиномиальной аппроксимации. Для рекурсивных систем мы имеемееs
ЧАС( еJ θ) = ∑Mк = 0бКе- J θ1 + ∑Nк = 1aКе- J θ(4)
и вы получаете задачу рационального приближения, которая обычно намного сложнее, чем проблема полиномиального приближения в случае КИХ-фильтров. Из формулы (3) и (4) можно видеть , что частотная характеристика фильтра FIR, конечно , только частный случай отклика рекурсивного фильтра с коэффициентами , .aК= 0k = 1 , … , N
Теперь давайте кратко рассмотрим методы проектирования фильтров. Для КИХ-фильтров вы можете использовать обратное преобразование Фурье требуемой частотной характеристики, чтобы получить импульсную характеристику фильтра, которая непосредственно соответствует коэффициентам фильтра. Поскольку вы аппроксимируете желаемый отклик импульсным откликом конечной длины, вы должны применить гладкое окно к полученному импульсному отклику, чтобы минимизировать колебания в фактическом отклике частоты из-за явления Гиббса. Этот метод называется методом частотной выборки.
Для простых стандартных фильтров, таких как идеальные фильтры нижних, верхних, полосовых или полосовых фильтров (и некоторые другие), вы даже можете аналитически рассчитать точную импульсную характеристику, взяв обратное преобразование Фурье идеального требуемого отклика:
часК= 12 π∫π- πЧАС( еJ θ) еj k θdθ
Этот интеграл легко оценить для кусочно-постоянных желаемых откликов, как в случае идеальных частотно-избирательных фильтров. Это даст вам бесконечно длинный, не причинный импульсный отклик, который должен быть обработан и сдвинут, чтобы сделать его конечным и причинным. Этот метод известен как оконный дизайн.
Есть, конечно, много других методов проектирования FIR-фильтров. Одним из важных численных методов является известный алгоритм обмена Паркс-Макклеллан, который разрабатывает оптимальные фильтры с постоянной полосой пропускания и пульсациями в полосе задерживания. Это метод числовой аппроксимации, и существует множество доступных программных реализаций, например, в Matlab и Octave.
Наиболее распространенным методом расчета БИХ для частотно-избирательных фильтров является метод билинейного преобразования. Этот метод просто использует аналитические формулы для построения оптимальных аналоговых фильтров (таких как фильтры Баттерворта, Чебышева, Кауэра / Эллиптика и Бесселя) и преобразует их в область дискретного времени, применяя билинейное преобразование к комплексной переменной (аналог домен), который отображает (мнимую) частотную ось комплексной плоскости в единичную окружность в комплексной плоскости (область дискретного времени). Не беспокойтесь, если вы еще не знаете много о сложных передаточных функциях в аналоговой или дискретной области времени, потому что существуют хорошие реализации метода билинейного преобразования, например, в Matlab или Octave.ssZ
Конечно, есть много более интересных и полезных методов, в зависимости от типа используемых вами спецификаций, но я надеюсь, что это поможет вам начать работу и сделает любой материал, с которым вы столкнетесь, более понятным. Очень хорошая (и бесплатная) книга, охватывающая некоторые основные методы проектирования фильтров (и многие другие), называется « Введение в обработку сигналов» от Orfanidis. Вы можете найти несколько примеров дизайна там. Еще одна замечательная классическая книга - « Digital Filter Design» от Parks and Burrus.