exponenta event banner

Чем фильтр скользящего среднего отличается от фильтра FIR?

Фильтр скользящего среднего является частным случаем обычного фильтра FIR. Оба фильтра имеют конечные импульсные характеристики. Фильтр скользящего среднего использует последовательность масштабированных 1s в качестве коэффициентов, в то время как коэффициенты КИХ-фильтра разрабатываются на основе спецификаций фильтра. Обычно они не являются последовательностью 1 с.

Скользящее среднее потоковых данных вычисляется с помощью конечного скользящего окна:

movAvg = x [n] + x [n 1] +... + x [n − N] N + 1

N + 1 - длина фильтра. Этот алгоритм является частным случаем регулярного КИХ-фильтра с вектором коэффициентов, [b0, b1,..., bN].

FIROutput = b0x [n] + b1x [n 1] +... + bNx [n − N]

Для вычисления выходного сигнала обычный фильтр FIR умножает каждую выборку данных на коэффициент из вектора [b0, b1,..., bN] и добавляет результат. Фильтр скользящего среднего не использует никаких множителей. Алгоритм добавляет все выборки данных и умножает результат на 1/filterLength.

Частотная характеристика фильтра скользящего среднего и фильтра FIR

Сравните частотную характеристику фильтра скользящего среднего с частотной характеристикой обычного КИХ-фильтра. Задайте коэффициенты обычного КИХ-фильтра как последовательность масштабированных 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');

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent FIR Filter, Moving Average Filter.

Частотные характеристики точно совпадают, что доказывает, что фильтр скользящего среднего является частным случаем фильтра FIR.

Для сравнения просмотрите частотную характеристику фильтра без шума.

fvtool(filter);

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

Сравните частотную характеристику фильтра с частотной характеристикой идеального фильтра. Можно видеть, что основной выступ в полосе пропускания не плоский, а пульсации в полосе останова не ограничены. Частотная характеристика фильтра скользящего среднего не соответствует частотной характеристике идеального фильтра.

Чтобы реализовать идеальный КИХ-фильтр, измените коэффициенты фильтра на вектор, который не является последовательностью масштабированных 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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

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

Связанные темы