Как фильтр скользящего среднего значения отличается от КИХ-фильтра?

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

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

movAvg=x[n]+x[n1]+...+x[nN]N+1

N + 1 является длиной фильтра. Этот алгоритм является особым случаем обычного КИХ-фильтра с содействующим вектором, [b 0, b 1..., b N].

FIROutput=b0x[n]+b1x[n1]+...+bNx[nN]

Чтобы вычислить выход, обычный КИХ-фильтр умножает каждую выборку данных с коэффициентом от [b 0, b 1..., b N] вектор и добавляет результат. Фильтр скользящего среднего значения не использует множителей. Алгоритм добавляет все выборки данных и умножает результат с 1 / filterLength.

Частотная характеристика фильтра скользящего среднего значения и КИХ-фильтра

Сравните частотную характеристику фильтра скользящего среднего значения с тем из обычного КИХ-фильтра. Установите коэффициенты обычного КИХ-фильтра как последовательность масштабированных 1's. Масштабный коэффициент равняется 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 object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line. These objects represent FIR Filter, Moving Average Filter.

Частотные характеристики соответствуют точно, который доказывает, что фильтр скользящего среднего значения является особым случаем КИХ-фильтра.

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

fvtool(filter);

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

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

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

Спроектируйте коэффициенты фильтра на основе предопределенных технических требований фильтра. Например, спроектируйте equiripple КИХ-фильтр с нормированной частотой среза 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 object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains 2 objects of type line.

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

Похожие темы