Поговорим о различных методах сравнения данных. В программировании микроконтроллеров часто необходимо усреднять значения датчиков для более точных и постоянных показаний. С помощью усреднения мы убираем кратковременные выбросы значений датчиков, что дает нам более или менее ровные показания.
В данной статье рассмотрим 3 способа усреднений. Таких как:
- среднее арифметическое усреднение;
- среднее квадратическое усреднение;
- скользящее среднее.
Для начала нам нужны данные которые мы будем усреднять. Для этого возьмем массив из 1000 рандомно сгенерированных значений от 0 до 1000. Все построения будем отображать на графике.

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


Как мы видим варьируя n (количество выборок) мы можем добиться нужного нам усреднения.
Cреднее квадратическое усреднение
Данный метод похож на среднее арифметическое, за одним отличием, усредняются не сами данные, а их квадраты.
где, n – количество усредняемых значений.


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


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




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