Фильтр скользящего среднего является частным случаем обычного фильтра FIR. Оба фильтра имеют конечные импульсные характеристики. Фильтр скользящего среднего использует последовательность масштабированных 1s в качестве коэффициентов, в то время как коэффициенты КИХ-фильтра разрабатываются на основе спецификаций фильтра. Обычно они не являются последовательностью 1 с.
Скользящее среднее потоковых данных вычисляется с помощью конечного скользящего окна:
+ x [n − N] N + 1
N + 1 - длина фильтра. Этот алгоритм является частным случаем регулярного КИХ-фильтра с вектором коэффициентов, [b0, b1,..., bN].
+ bNx [n − N]
Для вычисления выходного сигнала обычный фильтр FIR умножает каждую выборку данных на коэффициент из вектора [b0, b1,..., bN] и добавляет результат. Фильтр скользящего среднего не использует никаких множителей. Алгоритм добавляет все выборки данных и умножает результат на 1/filterLength.
Сравните частотную характеристику фильтра скользящего среднего с частотной характеристикой обычного КИХ-фильтра. Задайте коэффициенты обычного КИХ-фильтра как последовательность масштабированных 1. Коэффициент масштабирования равен 1/| filterLength |.
Создать dsp.FIRFilter Система object™ и установите ее коэффициенты на 1/40. Чтобы вычислить скользящее среднее, создайте dsp.MovingAverage Системный объект с скользящим окном длиной 40. Оба фильтра имеют одинаковые коэффициенты. Вход является гауссовым белым шумом со средним значением 0 и стандартным отклонением 1.
filter = dsp.FIRFilter('Numerator',ones(1,40)/40);
mvgAvg = dsp.MovingAverage(40);
input = randn(1024,1);
filterOutput = filter(input);
mvgAvgOutput = mvgAvg(input);Визуализируйте частотную характеристику обоих фильтров с помощью fvtool.
hfvt = fvtool(filterOutput,1,mvgAvgOutput,1); legend(hfvt,'FIR Filter','Moving Average Filter');

Частотные характеристики точно совпадают, что доказывает, что фильтр скользящего среднего является частным случаем фильтра FIR.
Для сравнения просмотрите частотную характеристику фильтра без шума.
fvtool(filter);

Сравните частотную характеристику фильтра с частотной характеристикой идеального фильтра. Можно видеть, что основной выступ в полосе пропускания не плоский, а пульсации в полосе останова не ограничены. Частотная характеристика фильтра скользящего среднего не соответствует частотной характеристике идеального фильтра.
Чтобы реализовать идеальный КИХ-фильтр, измените коэффициенты фильтра на вектор, который не является последовательностью масштабированных 1s. Частотная характеристика фильтра изменяется и стремится приблизиться к идеальной характеристике фильтра.
Проектирование коэффициентов фильтра на основе предварительно определенных спецификаций фильтра. Например, сконструировать эквиптный КИХ-фильтр с нормированной частотой отсечки 0,1, пульсацией полосы пропускания 0,5 и затуханием полосы останова 40 дБ. Использовать fdesign.lowpass для определения спецификаций фильтра и design СПОСОБ ПРОЕКТИРОВАНИЯ ФИЛЬТРА.
FIReq = fdesign.lowpass('N,Fc,Ap,Ast',40,0.1,0.5,40); filterCoeff = design(FIReq,'equiripple','SystemObject',true); fvtool(filterCoeff)

Отклик фильтра в полосе пропускания почти плоский (аналогичен идеальному отклику), и полоса останова имеет ограниченные эквиропли.