вот небольшой скрипт для матлаб - октав иллюстрирующий выравнивание шумовых полос для значения alpha = 2/M (т.е. фильтр скользящего среднего на М отсчетов и экспоненциальный ФНЧ при этом значении alpha имеют примерно равные шумовые полосы.) Все становится не очень хорошо при малом M = 5 (ошибка до 20%), но уже для М = 36 она не превышает одного процента. Для малых M можно еще пошаманить с подбором alpha.
Код
Ms = [5, 36, 360, 3600]; %количество отсчетов, участвующее в усреднении
show_plot = 1;
for ii = 1 : length(Ms)
M = Ms(ii);
freq_ananlysis_len = 4096;
f = linspace(0,freq_ananlysis_len-1,freq_ananlysis_len) * pi/(freq_ananlysis_len-1) * min(1, 20/M);
s1 = abs(freqz(1/M*ones(1,M),1,f));
alpha = 2/(M);
s2 = abs(freqz(alpha,[1 , -(1 -alpha)],f));
ss(ii) = sum(s1.^2)/sum(s2.^2);
aa = ss(ii)
if show_plot
mm = 10*log10(s1);
ix = find(mm < -30); mm(ix) = -30;
plot(mm,'r');
hold on;
mm = 10*log10(s2);
ix = find(mm < -30); mm(ix) = -30;
plot(mm,'g');
hold off
grid on
pause(5)
end
end
err = abs(ss - 1)