Цифровой сглаживающий фильтр для сенсоров

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Ответить
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Цифровой сглаживающий фильтр для сенсоров

Сообщение Alex » Ср дек 19, 2012 11:27 am

Собственно вот. Смысл сего кода виден на графике. Вместо скачков показаний сенсора видим реальный график роста температуры.

Вызов

&fil01=x

,где x — это глубина фильтра (от 1 до …). Подбирается индивидуально, ходовые значения от 1 до 500. При x=500 сглаживает в почти ровную линию. На втором графике х=100.

Работает быстро и не тормозит!

Код: Выделить всё


//---------------------------- fil01 
  
if ($_GET['fil01']) {
  $fil01=$_GET['fil01'];
} else {
   $fil01=0;
  }


 if($fil01!=0){
   $all = count($values);
   for($z=0; $z<$fil01; $z++){
     for($i=0; $i<$all-1; $i++){
       if ($values[$i]!=0 && $values[$i+1]!=0) {
       $values[$i]=($values[$i]+$values[$i+1])/2;
	}
  }
   for($i=$all-1; $i>=0; $i--){
     if ($values[$i]!=0 && $values[$i-1]!=0) {
       $values[$i]=($values[$i]+$values[$i-1])/2;
     }
   }
  } //for($z=0;
 } //if($fil01==1)
Вставляется перед этими строчками (перед добавлением в DataSet)

$DataSet->AddPoint($values,"Serie1");
$DataSet->AddPoint($hours,"Serie3");
Вложения
fil01.png
fil01
fil01.png (28.29 КБ) 5458 просмотров
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение sergejey » Ср дек 19, 2012 12:07 pm

Любопытно. Попробую со своими графиками поэкспериментировать.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Kashalex
Сообщения: 25
Зарегистрирован: Вс окт 13, 2019 10:17 am
Откуда: Кашира
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение Kashalex » Ср ноя 06, 2019 11:05 pm

А можно по подробнее про использование фильтра
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение xor » Чт ноя 07, 2019 11:07 am

Kashalex писал(а):А можно по подробнее про использование фильтра
Тема 2012 года, тс ушел из проекта давно

Отправлено с моего Redmi 4X через Tapatalk

serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение serghei » Чт ноя 07, 2019 1:12 pm

Хозяин ушёл15 января , но наследие живет до сих пор. И если код написан правильно , надо его только прочитать. Смысл любого фильтра - усреднение соседних значений. В простом случае - берем несколько соседних значений из массива и усредняем их . А потом уже по усреднённым данным строим график
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение Logrus » Чт ноя 07, 2019 2:03 pm

это пчартс и это там давно уже есть из коробки, помнится даже в блоге было ...
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Kashalex
Сообщения: 25
Зарегистрирован: Вс окт 13, 2019 10:17 am
Откуда: Кашира
Благодарил (а): 2 раза
Поблагодарили: 0

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение Kashalex » Чт ноя 07, 2019 7:11 pm

Спасибо за ответы. Но хотелось бы более предметно. У меня есть набор данных, график из которых похож на пилу и есть соответственно желание как то его сгладить. ТС предлагает способ, но я не совсем понимаю как его применить практически. Потому и вопрос к умеющим, как.
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Цифровой сглаживающий фильтр для сенсоров

Сообщение Logrus » Чт ноя 07, 2019 10:15 pm

$fil01 = ''; //сглаживание, по умолчанию = 0 (отсутствует, но можно подставить цифру в кавычки и чем она больше, тем больше сгладит)
https://connect.smartliving.ru/profile/ ... chart.html
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Ответить