Сравнение методов усреднения данных

Данные без фильтрации

Поговорим о различных методах сравнения данных. В программировании микроконтроллеров часто необходимо усреднять значения датчиков для более точных и постоянных показаний. С помощью усреднения мы убираем кратковременные выбросы значений датчиков, что дает нам более или менее ровные показания.

В данной статье рассмотрим 3 способа усреднений. Таких как:

  • среднее арифметическое усреднение;
  • среднее квадратическое усреднение;
  • скользящее среднее.

Для начала нам нужны данные которые мы будем усреднять. Для этого возьмем массив из 1000 рандомно сгенерированных значений от 0 до 1000. Все построения будем отображать на графике.

Данные без фильтрации
Рисунок 1. Данные без фильтрации

Cреднее арифметическое усреднение

Данный тип усреднения, является самым простым из рассматриваемых. Общая формула:

\[ \overline{x}=\frac{1}{n}\displaystyle\sum_{i=1}^{n} x_i=\frac{1}{n}(x_1+…+x_n) \]

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

Среднее арифметическое при n=16
Рисунок 2. Среднее арифметическое при n=16
Среднее арифметическое при n=3
Рисунок 3. Среднее арифметическое при n=3

Как мы видим варьируя n (количество выборок) мы можем добиться нужного нам усреднения.

Cреднее квадратическое усреднение

Данный метод похож на среднее арифметическое, за одним отличием, усредняются не сами данные, а их квадраты.

\[ s=\sqrt{\frac{a_1^2+a_2^2+…a_n^2}{n}} \]

где, n – количество усредняемых значений.

Среднее квадратичное при n=16
Рисунок 4. Среднее квадратичное при n=16
Среднее квадратичное при n=3
Рисунок 5. Среднее квадратичное при n=3

Скользящее среднее

\[ SMA_t=\frac{1}{n}\displaystyle\sum_{i=0}^{n-1} p_{t-i}=\frac{p_t+p_{t-1}+…+p_{t-i}+…+p_{t-n+2}+p_{t-n+1}}{n} \]

где – n количество значений для усреднения, pt – значения в точке t. SMAt – значение простого скользящего среднего.

Минусом данного метода является первоначальное накопление данных, равное количеству n.

Скользящее среднее при n=16
Рисунок 6. Скользящее среднее при n=16
Скользящее среднее при n=50
Рисунок 7. Скользящее среднее при n=50

Из графика n=50 видно, как происходит нарастание данных. Чем выше n, тем сильнее будет сглаживание данных.

Исходный код программки на C# можно скачать по ссылке.

4 1 голос
Рейтинг статьи
Подписаться
Уведомить о
guest
3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Alvin
Alvin
1 год назад

Минусом данного метода является первоначальное накопление данных, равное количеству n.

Вообще-то подобное является необходимостью ЛЮБОГО из приведённых трёх методов. Как же вы будете вычислять среднеарифметическое и среднеквадратичное среднее по заданным 16-ти измерениям, если пока успели сделать, скажем, всего лишь три промера?! )))

Дмитрий
Дмитрий
Ответить на  Alvin
1 год назад

В этих алгоритмах лучше применить чуть другой очевидный подход.Если текущее колличество значений m меньше заданного n,то делить сумму на реальное количество элементов m, а не на n.