Алгоритм простого экспоненциального сглаживания (альфа-сглаживания) широко применяется в задачах обработки временных рядов, в частности, в экономических задачах прогнозирования.
При обработке измерений физических величин этот рекурсивный алгоритм обычно используется в качестве фильтра низких частот для подавления шумов измерения, для чего выбирается малое значение параметра альфа.
В то же время выбор этого коэффициента в соответствии с уровнем шума измерений позволяет при определенном уровне ошибки измерений наблюдать и высокочастотные составляющие получаемого сигнала.
Далее предлагается простой алгоритм, позволяющий контролировать уровень ошибки фильтрации из-за влияния шума измерений независимо от изменения уровня этого шума и эффективно использовать экспоненциальное сглаживание для выделения полезного сигнала.
Запишем алгоритм сглаживание (экспоненциального осреднения) в форме фильтра Калмана для одномерного вектора состояния. Алгоритм в такой записи приобретает вид регулятора с обратной связью и не предполагает постоянства коэффициентa обратной связи k ( k соответствует параметру альфа) в процессе измерения:
nev(i) = z(i) - a(i); (1)
а(i+1) = a(i) + k(i) * nev(i);
здесь:
- i - цикл измерения;
- а - оценка сигнала(выходной параметр фильтра);
- z - измеренная величина(входной параметр);
- nev - невязка измерения.
Выделим поправку к вектору состояния:
p1(i) = k(i) * nev(i); (2)
Это выражение представляет собой первую разностную производную от оценки а. За единицу времени принято время между циклами опроса датчиков , поэтому далее везде член dt опущен.
Запишем вторую разностную производную оценки а:
p2(i) = p1(i) - p1(i-1) (3)
Если на вход поступает только шум измерений (предполагается, что входной сигнал можно представить как сумму истинного значения измеряемого параметра и ошибки (шума) измерения, представляющей собой значения случайной величины), то:
p2(i) = k(i) * (z(i) - a(i)) - k(i-1) * (z(i-1)-a(i-1))
Полагая а(i) ~ а(i-1); k(i) ~ k(i-1) в соседних циклах, получаем:
p2(i) = k(i) * (z(i) - z(i-1)); (4)
Дисперсия p2 : D(p2) = 2*k*k*D(z), среднеквадратическое отклонение(СКО) p2:
СКО(p2)~1,4*k *СКО(z)
(в данном случае z -случайная ошибка измерения).
Вклад во вторую производную от составляющей спектра полезного сигнала с периодом Т пропорционален квадрату величины (2Pi/T), (p1 пропорционально (2pi/T)).
Предположим, что частота опроса достаточно велика и период самой высокочастотной подлежащей наблюдению гармоники составляет 20-30 циклов измерения.
Тогда максимальное значение p2 составит ~ 1/20*k *A (A - амплитуда исходного сигнала).
Сравнивая это значение с вкладом от шума измерений, можно заключить,что производная p2 может служить индикатором влияние шума измерений на оценку сигнала. (В случае, если в полезном сигнале высокочастотные составляющие относительно малы или не столь важно наблюдать “быстрые” изменения сигнала, можно далее везде использовать вместо p2 первую производную p1).
Подключим теперь к фильтру (1) адаптивный нелинейный регулятор:
lf Abs(p2(j) < u and k(j) < kmax then k(j):=k(j) + d; (5)
lf Abs(p2(j) > u and k(j) > kmin then k(j):= k(j) - d;
(регулятор (5) может работать в более редком цикле j, кратном циклу i, при этом предполагается, что предыдущее значение p1(i-1), используемое для расчета p2, берется из ближайшего i -го цикла).
Здесь kmax, kmin - ограничители изменения k в процессе регулирования (kmax < 1, kmin > 0), d - величина разовой коррекции k, определяет быстродействие регулятора.
Для устойчивости фильтра должно выполняться:
Kmin > d, 1 - kmax > d;
С помощью изменения коэффициента k регулятор “старается” поддерживать уровень p2, то есть составляющую ошибки оценки a из-за случайных ошибок измерений (нa графике, представляющем результат фильтрации - это «выбросы», «колебания» , c частотой опроса датчиков) на уровне уставки u.
Очевидно, при величине уставки u, сравнимой с уровнем СКО случайной ошибки измерений, k стремится к единице.
Уменьшение задаваемой величины u приводит как к уменьшению влияния ошибки измерения на оценку, так и к сглаживанию полезного сигнала.
Для справки укажем что при k, равном 0,025, экспоненциальное осреднение практически не снижает амплитуду составляющих спектра сигнала с периодом T > 400 циклов, при k = 0,05 > 200; k = 0,1 >100; к = 0,2 > 50; k = 0,4 > 25
( приближённые эмпирические результаты).
Величина уставки u может быть выбрана в процессе визуальной подгонки, заданный уровень влияния ошибки шума измерений на выходные значения фильтра будет обеспечен независимо от изменения уровня этого шума.
Ниже для иллюстрации приведены результаты фильтрации заданного входного сигнала с помощью простого экспоненциального сглаживания с постоянным параметром альфа, и адаптивным фильтром (исходный код адаптивного фильтра).
На вход подается полезный сигнал в виде суммы двух синусоид с периодами 50 и 300 и амплитудами 50 и 70 соответственно. На втором участке (интервал от 500 до 1000 циклов наблюдения) добавляется ошибка измерения-нормально распределенная случайная величина с СКО=30, на третьем(последнем) участке (1000-1500) СКО ошибки увеличено до 60.
Верхний график- график входного сигнала(красная кривая везде-исходный сигнал без ошибки измерения).
Следующие два графика ниже - результат экспоненциального сглаживания с k (альфа), равным 0,02 и 0,4 соответственно.
Нижний график - выходные значения адаптивного фильтра с параметрами:
- d = 0,01
- kmax = 0,8
- kmin = 0,015
- u = 5, алгоритм регулятора (5), корректирующий k, выполнялся в каждом цикле i опроса .
В процессе самонастройки коэффициент k устанавливался в фильтре на уровне 0,8 (первый участок), 0,3 (второй участок), 0,07 (третий участок графика).