Вопрос по фильтру GMedian3

dorogoy

✩✩✩✩✩✩✩
7 Июн 2020
28
3
Судя по описанию данный метод сравнивает 3 числа и выбирает из него среднее. По примеру мы видим что value считывается один раз и потом к нему применяется метод testFilter.filtered. Где он берет ещё 2 значения с чем сравнивать ?
Если надо фильтровать несколько аналоговых входов надо создавать несколько фильтров ?

GMedian3<int> testFilter;
GMedian3<int> testFilter1;
GMedian3<int> testFilter2;

/*
Пример использования быстрого медианного фильтра 3 порядка
*/

#include "GyverFilters.h"
GMedian3<int> testFilter; // указываем тип данных в <>

void setup() {
Serial.begin(9600);
}

void loop() {
int value = analogRead(0);
// добавляем шум "выбросы"
value += random(2) * random(2) * random(-1, 2) * random(50, 250);
Serial.print(value);
Serial.print(',');
value = testFilter.filtered(value);
Serial.println(value);
delay(80);
}</int>
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,302
Москва
Цикл loop выполняется постоянно. Соотв берутся 3 последних числа и из цикла. Если вести счетчик чисел, то пока получено менее 3-х чисел можно возвращать полученное значение , а начиная с получения 3-го числа уже выполнять полный алгоритм.
Ну я бы так сделал, алгоритм не смотрел, но другие фильтры (типа бегущего среднего) сделаны именно так.
 
  • Лойс +1
Реакции: dorogoy