Цитата(bmf @ Oct 31 2005, 20:32)
формула для 1-го порядка:
y(n) = x(n) - x(n-1) + R * y(n-1)
"R" 0.9 .. 1
для -3dB: R = 1 - (pi*2 * frequency /samplerate)
ну а то что в выше - просто реализация что бы небыло дробного умножения
По условию задачи более корректно будет сначала произвести оценку среднего значения (хотя бы в первом порядке):
E(n)=(1-R)*x(n) + R*E(n-1), где 0,9<R<1, ____(1.1)
а затем вычесть ее из текущего значения:
y(n)=x(n)-E(n).___________________________(1.2)
Реализовать можно подобно тому, как Вы и предложили.
//-------------
Вообще-то при таком соотношении частот выборки и измеряемого сигнала R нужно выбирать близким к 1, поэтому, при реализации моего предложения могут быть проблемы с переполнением, а Вашего - неустойчивость работы фильтра. Стоит подумать о системе 2-го порядка.
А еще лучше сначала, как и предлагали, усреднять по периоду (благо он известен):
e(k)=sum( x(n, k) )/N, _____________________(2.1)
где k-номер периода (k=0,1,2,3...), N - количество отсчетов на период (=100), n - номер отсчета в периоде, причем n=0...N-1).
В памяти держать ничего не нужно, кроме текущей суммы по периоду, которую при поступлении N отсчетов (100) нужно поделить на N (ничего не поделать!).
Далее:
E(k+1)=(1-R)*e(k) + R*E(k), где 0,9<R<1, ____(2.2)
и
y(n, k+1)=x(n, k+1)-E(k+1). _______________(2.3)
Здесь R можно выбрать не очень близким к 1, при этом проблема переполнения отпадет.
В качестве Е(1) нужно взять
Е(1)=е(0). _____________________________(2.4)