Общие сведения о методе скользящей средней
Скользящее среднее - один из распространенных методов сглаживания временных рядов. Данный метод широко используется для отображения изменений биржевых котировок, цен, годовых колебаний температур и т.д. Метод так же может быть весьма полезен в цифровой обработке сигналов для устранения высокочастотных составляющих и шумов, то есть он может быть использован в качестве фильтра низких частот. Пусть имеется оцифрованный сигнал S(n), где n - номер отчета в выборке сигнала. Применив метод скользящего среднего получаем сигнал F(n). Общая формула для вычисления скользящего среднего: , (1) где W - ширина области усреднения, pi - весовые коэффициенты. Суть метода заключается в замене точки выборки средним значением соседствующих точек в заданной окрестности. В общем случае для усреднения используются весовые коэффициенты, которые могут быть различными по значению. Частным случаем формулы 1 является простое скользящее среднее, являющееся результатом усреднения значений в окрестности точки S(k). Весовые коэффициенты для простого скользящего среднего pi=1/W. Таким образом, формула 1 принимает вид: , (2) Простое скользящее среднее прекрасно подходит для устранения высокочастотных шумовых составляющих из сигнала при его обработке, когда к фильтру не предъявляется высоких требований по фазофо-частотной характеристике, крутизне среза и т.д. Например, при устранении шумов перед декодированием из оцифрованного сигнала информации. Главным достоинством алгоритма простого скользящего среднего являются простота его реализации и нетребовательность к вычислительным ресурсом по сравнению с цифровыми фильтрами, реализующимися дискретной линейной сверткой. Если рассмотреть формулу 1, можно заметить, что она является описанием КИХ-фильтра, где весовые коэффициенты pi являются импульсной характеристикой. Трудоемкость вычисления результата КИХ-фильтрации определяется количеством коэффициентов импульсной характеристики (Nh) и количеством семплов(отсчетов) в выборке сигнала (Ns). Тогда для вычисления одного результирующего отсчета потребуется произвести Nh операций умножения и Nh операций сложения. Для вычисления результирующей (отфильтрованной) выборки необходимо произвести Nh·Ns операций умножения и Nh·Ns операций сложения. При реализации систем реального времени такая трудоемкость зачастую бывает неприемлемой. Если рассмотреть формулу 2 то несложно подсчитать, что для вычисления одного результирующего семпла потребуется Nh операций сложения и всего одна операция умножения. Для вычисления результирующей (отфильтрованной) выборки необходимо произвести Nh·Ns операций сложения и Ns операций умножения. Таким образом, реализация алгоритма по формуле 2 дает прирост в производительности на время Nh·ts, где ts - время, затрачиваемое на выполнение одной операции умножения. Алгоритм вычисления скользящего среднего можно далее оптимизировать по трудоемкости, а следовательно по времени выполнения за счет сокращения операций сложения, если учесть тот факт, что для применения фильтра суммирование по W отчетам можно провести только один раз для нахождения элемента F(k)= SUM(k)/W, (3) где (4) Тогда последующий элемент может быть вычислен по формуле F (k+1) = (SUM(k) + S (k+ W/2 + 1) - S (k - W/2)) / W (5) Пояснение к формуле (5) представленно на рисунке 1.
Рисунок 1 - Оптимизация нахождения сумм Таким образом, на первой итерации алгоритма необходимо провести Nh операций сложения, а на последующих Ns итерациях - всего по две операции сложения. |