Найти в Дзене

Адаптивный фильтр для обработки измерений физических величин

Алгоритм простого экспоненциального сглаживания (альфа-сглаживания) широко применяется в задачах обработки временных рядов, в частности, в экономических задачах прогнозирования.

При обработке измерений физических величин этот рекурсивный алгоритм обычно используется в качестве фильтра низких частот для подавления шумов измерения, для чего выбирается малое значение параметра альфа.

В то же время выбор этого коэффициента в соответствии с уровнем шума измерений позволяет при определенном уровне ошибки измерений наблюдать и высокочастотные составляющие получаемого сигнала.

Далее предлагается простой алгоритм, позволяющий контролировать уровень ошибки фильтрации из-за влияния шума измерений независимо от изменения уровня этого шума и эффективно использовать экспоненциальное сглаживание для выделения полезного сигнала.

Запишем алгоритм сглаживание (экспоненциального осреднения) в форме фильтра Калмана для одномерного вектора состояния. Алгоритм в такой записи приобретает вид регулятора с обратной связью и не предполагает постоянства коэффициент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 (третий участок графика).