Фильтр с конечной импульсной характеристикой

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Фильтр с конечной импульсной характеристикой (Нерекурсивный фильтр, КИХ-фильтр) или 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);
}
//программа почему-то некорректно отображает импульсный отклик фильтра
//при фильтровании wav файла - возможно, из-за ошибок округления

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]