mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
257 Median filter added to ultasonic
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
name=GyverFilters
|
||||
version=2.0
|
||||
author=AlexGyver <beragumbo@ya.ru>
|
||||
maintainer=AlexGyver <beragumbo@ya.ru>
|
||||
version=2.1
|
||||
author=AlexGyver <alex@alexgyver.ru>
|
||||
maintainer=AlexGyver <alex@alexgyver.ru>
|
||||
sentence=Library with few filters for data.
|
||||
paragraph=Includes median, running average, AB, simplified Kalman and linear approximation filtering algorithms.
|
||||
category=Data Processing
|
||||
|
||||
@@ -7,7 +7,8 @@
|
||||
#include <filters/runningAverage.h>
|
||||
|
||||
/*
|
||||
GyverFilters - библиотека с некоторыми удобными фильтрами:
|
||||
GyverFilters - библиотека с некоторыми удобными фильтрами.
|
||||
Документация: https://alexgyver.ru/gyverfilters/
|
||||
- GFilterRA - компактная альтернатива фильтра экспоненциальное бегущее среднее (Running Average)
|
||||
- GMedian3 - быстрый медианный фильтр 3-го порядка (отсекает выбросы)
|
||||
- GMedian - медианный фильтр N-го порядка. Порядок настраивается в GyverFilters.h - MEDIAN_FILTER_SIZE
|
||||
@@ -23,4 +24,5 @@
|
||||
- Улучшен и исправлен median и median3
|
||||
- Улучшен linear
|
||||
- Смотрите примеры! Использование этих фильтров чуть изменилось
|
||||
- 2.1: Исправлен расчёт дельты в линейном фильтре
|
||||
*/
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
a = a - (long)sumX * sumY;
|
||||
a = (float)a / (arrSize * sumX2 - sumX * sumX);
|
||||
b = (float)(sumY - (float)a * sumX) / arrSize;
|
||||
delta = a * arrSize; // расчёт изменения
|
||||
delta = a * (x_array[arrSize-1] - x_array[0]); // расчёт изменения
|
||||
}
|
||||
float getA() {return a;} // получить коэффициент А
|
||||
float getB() {return b;} // получить коэффициент В
|
||||
@@ -27,4 +27,23 @@ public:
|
||||
|
||||
private:
|
||||
float a, b, delta;
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
Сам алгоритм выглядит так:
|
||||
void loop() {
|
||||
sumX = 0;
|
||||
sumY = 0;
|
||||
sumX2 = 0;
|
||||
sumXY = 0;
|
||||
for (int i = 0; i < steps; i++) {
|
||||
sumX += X[i];
|
||||
sumY += Y[i];
|
||||
sumX2 += X[i] * X[i];
|
||||
sumXY += X[i] * Y[i];
|
||||
}
|
||||
a = (steps * sumXY - sumX * sumY) / (steps * sumX2 - sumX * sumX);
|
||||
b = (sumY - a * sumX) / steps;
|
||||
int delta = steps * a;
|
||||
}
|
||||
*/
|
||||
Reference in New Issue
Block a user