Что же это за птица, этот FIR фильтр? Что лучше, IIR или FIR? В то время как на первый вопрос можно дать чёткий ответ, то на второй вопрос однозначного ответа нет. Каждый из фильтров, будь то FIR или же IIR обладают собственными свойствами. Основное отличие между ними в том, что FIR фильтр не вносит фазовые изменения в фильтруемый сигнал, в то время как IIR в большинстве случаев вносит сильные изменения в фазовый спектр сигнала. Для «буквоедов», мы не рассматриваем случай групповой задержки сигнала. Одной из позитивных сторон рассматриваемого в этой статье типа фильтра является простая в понимании модель его работы. Суть работы фильтра базируется на следующем законе: «Свертка сигналов во временной области равна произведению их спектров в частотной области». Исходя из этого закона, можно выбрать сигнал с заведомо известным спектром (ядро или же kernel) и дальше свертывать с ним сигнал, который нужно отфильтровать. Существует несколько методов синтеза ядра для FIR фильтров. Мы остановимся на методе генерации ядра свертки методом SINC. Но сначала рассмотрим, что собой представляет данная функция и почему именно её принято брать при генерации ядра. С чего все началось? Хочу вам рассказать предысторию возникновения sinc (sin(x)/x) фильтров. Была задача получить сигнал, спектр которого напоминал прямоугольную ступеньку. Путем математического вывода (который по желанию можно найти в интернете) было доказано, что функция:

обладает желаемым спектром (спектром в виде ступеньки).

В этом выражении  — частота среза в герцах.

 

Во избежание недоразумений и взаимонепонимания представляю доказательство того, что спектр sinc функции действительно прямоугольная ступень. Результаты моего микроисследования в MathCAD представлены ниже:

Частотный анализ sinc функции

Количество точек для нашего сигнала:

Левая граница нашего сигнала:

Правая граница сигнала:

Основная частота нашего sinc сигнала:

Sinc функцию можно записать вот так:

Или вот так:

 

 График sinc сигнала

 

Целочисленный индекс для будущего преобразования Фурье:

Рутина для записи нашего с вами sinc сигнала в массив S:

Проделываем преобразование Фурье:

 

 

График спектра для sinc сигнала

 

Фазовый спектр:

 

Спектр сигнала действительно отдаленно напоминает прямоугольную ступень.

 

 Фазовый спектр sinc сигнала

 

Как видим, фазовый спектр sinc функции идеален. Фаза линейная, а значит если брать данный сигнал в качестве ядра, то фазовых изменений не будет.

Подведем итоги… В этой статье было рассмотрена такая функция как sinc, которая в свою очередь используется в FIR фильтрах в качестве так называемого ядра свертки. Ценность данной функции в том, что она обладает прямоугольным спектром. Полученное ядро «свертывается» с сигналом, который необходимо отфильтровать. В результате мы получаем желаемый сигнал (отфильтрованный). В следующей статье мы рассмотрим практическое использование FIR фильтра.