Цитата(_pv @ Apr 25 2012, 13:09)

что-то как-то сложно: окна, фильтры.
надо посчитать (sum((Xa - Xi)^2)/(N-1))^0.5, Xa - среднее.
если возвести в квадрат и раскрыть скобки, то получится sum(Xa^2) + sum(Xi^2) - 2*Xa*sum(Xi)
sum(Xa^2) = N*(sum(Xi)/N)^2 = sum(Xi)^2/N
2*Xa*sum(Xi) = 2*sum(Xi)^2/N
то есть надо накапливать сумму выборок S1=sum(Xi) и сумму квадратов выборок S2=sum(Xi^2), ну и количество выборок N, тогда rms можно посчитать как:
((S2 - S1*S1/N)/(N-1))^0.5
Идея алгоритма в принципе правильна, но вычисляет он не RMS, а несмещенную оценку среднеквадратического отклонения (СКО) по данной выборке.
Это не одно и то же.
Простейший пример: допустим, что в последовательности X0, X1... XN-1 все Xn одинаковы. Соответственно СКО (X0...XN-1) == 0. Но RMS (X0...XN-1) == X.
Цитата(akorud @ Apr 25 2012, 11:50)

Рекомендую почитать
http://www.eetimes.com/design/embedded/400...an-calculationsЯ по советам из статьи делал честный RMS - оказалось что нужно только 2 32-битовые статические переменные + несколько констант. Используется только текущий отсчет. Если надо - могу найти свой код.
Да, частный случай БИХ варианта формирования усредняющего окна. Статья хороша "объяснением на пальцах" прикладных вопросов реализации и точности.