Фильтр с конечной импульсной характеристикой — различия между версиями
Myachikov (обсуждение | вклад) |
Myachikov (обсуждение | вклад) |
||
Строка 56: | Строка 56: | ||
== Построение КИХ-фильтров == | == Построение КИХ-фильтров == | ||
+ | Построение КИХ-фильтров заключается в выборе коэффициентов фильтра таким образом, чтобы полученная система имела требуемые характеристики. Чаще всего фильтр строят по заданной амплитудно-частотной характеристике. Существуют разные методы построения КИХ-фильтров: | ||
+ | # Window design method | ||
+ | # Метод частотной выборки | ||
+ | # Метод наименьших квадратов | ||
+ | # Метод Паркса-Макклиллана (также известный как Equiripple, Optimal, или Minimax метод). Алгоритм Ремеза обычно используется, чтобы найти оптимальный набор equiripple-коэффициентов. Задаётся желаемая амплитудно-частотная характеристика, функция весов ошибки отклика и порядок фильтра ''N''. Затем алгоритм находит множество из <math>\scriptstyle (N \,+\, 1)</math> коэффициентов, которые минимизируют максимум отклонения от идеального отклика. Интуитивно понятно, что этот алгоритм находит фильтр, который имеет АЧХ близкую к желаемой с той точностью, которая может быть достигнута с использованием <math>\scriptstyle (N \,+\, 1)</math> коэффициентов. Этот метод легко реализуется поскольку по крайней мере одна статья<ref>Rabiner, Lawrence R., and Gold, Bernard, 1975: Theory and Application of Digital Signal Processing (Englewood Cliffs, New Jersey: Prentice-Hall, Inc.) ISBN 0-13-914101-4</ref> включает в себя программу, которая принимает требуемую АЧХ и ''N'', и возвращает оптимальные коэффициенты фильтра. | ||
+ | # Фильтры Чебышева могут быть с тем же успехом построены с использованием алгоритмов БПФ. Алгоритм итеративен по своей природе. Вычисляется ДПФ от начальной характеристики фильтра с помощью БПФ (в качестве начального приближения можно взять h[n]=delta[n]). В частотной области проводится коррекция АЧХ в соответствии со спецификациями и вычисляется ОДПФ. Во временной области оставляют только N коэффициентов(обнулив оставшиеся). Далее повторяют БПФ, коррекцию и т.д. | ||
+ | |||
+ | Программные пакеты такие как MATLAB, GNU Octave, Scilab, и SciPy реализуют описанные выше методы. | ||
+ | |||
+ | Некоторые спецификации на фильтр представляют собой форму входного сигнала во временной области, которую фильтр должен "распознавать". Оптимальный согласованный фильтр для выделения сигнала любой форм из белого шума получается путём дискретизации требуемой формы сигнала и использования полученных коэффциентов в обратном порядке в качестве коэффициентов фильтра — импульсная характеристика полученного фильтра является зеркальным отражением по времени требуемой формы входного сигнала. | ||
+ | |||
+ | === Window design method === | ||
+ | |||
+ | В методе Window Design Method сначала строится идеальный БИХ-фильтр, затем к нему применяется Функция окна – во временной области, умножением бесконечной импульсной характеристики на функцию окна. Затем выполняется свёртка полученного результата с откликом на функцию окна. Если идеальная АЧХ достаточно проста, например, как прямоугольный отклик, результат свёртки можно сравнительно легко определить. На самом деле обычно сначала определяют требуемый результат и решают обратную задачу определения подходящей функции окна. Для этого метода особенно хорошо подходят окна Кайзера. | ||
+ | |||
+ | ==References== | ||
+ | |||
+ | <references/> | ||
== Ссылки == | == Ссылки == | ||
* [http://www.dsplib.ru/content/filters/fir/fir.html Расчет КИХ фильтра с линейной фазочастотной характеристикой методом частотной выборки] | * [http://www.dsplib.ru/content/filters/fir/fir.html Расчет КИХ фильтра с линейной фазочастотной характеристикой методом частотной выборки] | ||
* [http://www.dspguru.com/dsp/faqs/fir FIR FAQ] | * [http://www.dspguru.com/dsp/faqs/fir FIR FAQ] |
Версия 13:47, 15 июля 2013
Фильтр с конечной импульсной характеристикой (Нерекурсивный фильтр, КИХ-фильтр) или FIR-фильтр (FIR сокр. от finite impulse response — конечная импульсная характеристика) — один из видов линейных цифровых фильтров, характерной особенностью которого является ограниченность по времени его импульсной характеристики (с какого-то момента времени она становится точно равной нулю). Такой фильтр называют ещё нерекурсивным из-за отсутствия обратной связи. Знаменатель передаточной функции такого фильтра — некая константа.
Содержание
Динамические характеристики
Разностное уравнение, описывающее связь между входным и выходным сигналами фильтра: где — порядок фильтра, — входной сигнал, — выходной сигнал, а — коэффициенты фильтра. Иными словами, значение любого отсчета выходного сигнала определяется суммой масштабированных значений предыдущих отсчетов. Можно сказать иначе: значение выхода фильтра в любой момент времени есть значение отклика на мгновенное значение входа и сумма всех постепенно затухающих откликов предыдущих отсчетов сигнала, которые всё ещё оказывают влияние на выход (после -отсчетов импульсная переходная функция становится равной нулю, как уже было сказано, поэтому все члены после -го тоже станут равными нулю). Запишем предыдущее уравнение в более ёмком виде:
Для того, чтобы найти ядро фильтра положим
где — дельта-функция. Тогда импульсная характеристика КИХ-фильтра может быть записана как:
Z-преобразование импульсной характеристики даёт нам передаточную функцию КИХ-фильтра:
Свойства
КИХ-фильтр обладает рядом полезных свойств, из-за которых он иногда более предпочтителен в использовании, чем БИХ-фильтр. Вот некоторые из них:
- КИХ-фильтры устойчивы.
- КИХ-фильтры при реализации не требуют наличия обратной связи.
- Фаза КИХ-фильтров может быть сделана линейной
Прямая форма КИХ фильтра
КИХ фильтры могут быть реализованы с использованием трех элементов: умножитель, сумматор и блок задержки. Вариант, показанный на рисунке, есть прямая реализация КИХ-фильтров типа 1.
Пример программы
Ниже приведен пример программы КИХ-фильтра, написанный на C :
#define N 100 // порядок фильтра float h[N] = { #include “f1.h” }; //вставка файла с известными коэффициентами фильтра float x[N]; float y[N]; short my_FIR(short sample_data) { float result = 0; for ( int i = N - 2 ; i >= 0 ; i-- ) { x[i + 1] = x[i]; y[i + 1] = y[i]; } x[0] = (float)sample_data; for (int k = 0; k < N; k++) { result = result + x[k]*h[k]; } y[0] = result; return ((short)result); }
Построение КИХ-фильтров
Построение КИХ-фильтров заключается в выборе коэффициентов фильтра таким образом, чтобы полученная система имела требуемые характеристики. Чаще всего фильтр строят по заданной амплитудно-частотной характеристике. Существуют разные методы построения КИХ-фильтров:
- Window design method
- Метод частотной выборки
- Метод наименьших квадратов
- Метод Паркса-Макклиллана (также известный как Equiripple, Optimal, или Minimax метод). Алгоритм Ремеза обычно используется, чтобы найти оптимальный набор equiripple-коэффициентов. Задаётся желаемая амплитудно-частотная характеристика, функция весов ошибки отклика и порядок фильтра N. Затем алгоритм находит множество из коэффициентов, которые минимизируют максимум отклонения от идеального отклика. Интуитивно понятно, что этот алгоритм находит фильтр, который имеет АЧХ близкую к желаемой с той точностью, которая может быть достигнута с использованием коэффициентов. Этот метод легко реализуется поскольку по крайней мере одна статья[1] включает в себя программу, которая принимает требуемую АЧХ и N, и возвращает оптимальные коэффициенты фильтра.
- Фильтры Чебышева могут быть с тем же успехом построены с использованием алгоритмов БПФ. Алгоритм итеративен по своей природе. Вычисляется ДПФ от начальной характеристики фильтра с помощью БПФ (в качестве начального приближения можно взять h[n]=delta[n]). В частотной области проводится коррекция АЧХ в соответствии со спецификациями и вычисляется ОДПФ. Во временной области оставляют только N коэффициентов(обнулив оставшиеся). Далее повторяют БПФ, коррекцию и т.д.
Программные пакеты такие как MATLAB, GNU Octave, Scilab, и SciPy реализуют описанные выше методы.
Некоторые спецификации на фильтр представляют собой форму входного сигнала во временной области, которую фильтр должен "распознавать". Оптимальный согласованный фильтр для выделения сигнала любой форм из белого шума получается путём дискретизации требуемой формы сигнала и использования полученных коэффциентов в обратном порядке в качестве коэффициентов фильтра — импульсная характеристика полученного фильтра является зеркальным отражением по времени требуемой формы входного сигнала.
Window design method
В методе Window Design Method сначала строится идеальный БИХ-фильтр, затем к нему применяется Функция окна – во временной области, умножением бесконечной импульсной характеристики на функцию окна. Затем выполняется свёртка полученного результата с откликом на функцию окна. Если идеальная АЧХ достаточно проста, например, как прямоугольный отклик, результат свёртки можно сравнительно легко определить. На самом деле обычно сначала определяют требуемый результат и решают обратную задачу определения подходящей функции окна. Для этого метода особенно хорошо подходят окна Кайзера.
References
- ↑ Rabiner, Lawrence R., and Gold, Bernard, 1975: Theory and Application of Digital Signal Processing (Englewood Cliffs, New Jersey: Prentice-Hall, Inc.) ISBN 0-13-914101-4