привет народ посоветуйте фильтр данных нужна такая логика: постоянно получаем свежие значения в список сортируем его по возрастанию, отбрасываем самое большое и самое маленькое число а оставшиеся усредняем Как называется такой фильтр не могу нагуглить...
Комментарии: 34
Anonim
так усредняйте медианный
Kostya
а на чем ты пишешь?
Sergey
на си от платформио аруиновский диалект
Anonim
нет, это не "ардуиновмкий диалект Си". вы не признали обыкновенный C++
Sergey
:) тапа того
Kostya
1. Создать массив нужной величины, заполняешь пока не останется пустых ячеек, дальше при каждом добавлении удаляешь 0 элемент, сдвигаешь значения в массиве, и добавляешь новый в конец. 2. https://function-x.ru/cpp_algoritmy_sortirovki.html вот варианты сортровок, пузырьком проще всего разобраться если не оч дружишь с кодом, вы ходе есть отсортированный массив значений 3. удаляешь из массива значения по индексу в массиве == 0 и равному крайнему заполненному значению 4. дальше фором итерируешь массив и += все значения в одну пепеременную 5. дальше делишь на кол-во не пустых ячеек в массиве 6. оптимизируешь все что нписал выше)
Sergey
+ но там же опять целочисленка внутри почему то
Kostya
просто в пункте 4 надо переменную сразу обьявить как double
Sergey
да собственно так и делать
Anonim
нет. там надо хитро делать += новое значение к среднему, а не хранить ворох старых значений
Sergey
вот я идумал может кто уже родил либу готовую :) чтобы склассами и т.п. с чего вдруг а если новое выброс и более того выбросы надо тоже хранить все
Kostya
роди ты ))) у тебя специфический кейс , такое обычно не пишут просто так , а под конкретную задачу уже
Sergey
так как возможно они не выбросы вовсе а изменившаяся величина да что может быть более тривиальным как фильтрация шумного ацп? нескольких шумных ацп :)
Anonim
я картинку с камеры обрабатываю. фи. ацп...
Sergey
т.е. нужно два массива
Anonim
сначала медиана потом в среднее ты хранишь медианное окно. что осреднил - уже не хранишь
Sergey
каждый выброс должен оставатсья в массиве удалятся должно только самое старое до сортировки
Anonim
у вас много времени или памяти?
Sergey
много и того и другого важны максимально красивые графики и точные одна точка раз в 2-3 минуты норма графики за года...
Anonim
то есть это не реал-тайм расчеты?
Sergey
нет вернее так измеряемая величина меняется часами ну может минутами но важно видеть момент ее резкой смены и он должен быть именно что резкий а не гора нарастающая или впадина которая рисуется часами
Anonim
вы хотите странного у вас есть описание готового решения. но вы хотите еще более готовое решение
Sergey
еще более готовое :) чтоб обявить фильтр и использовать его а не писать :)
Andrey
нафига вообще тратить время на сдвиг массива, когда его можно переписывать по кругу от начала к концу?
Dmitry
всем привет! подскажите кто перепрошивал паяльник Pinecil из под линуха?
Anonim
строить графики... за года... на ардуине.... я вас точно правильно понял?
Andrey
и потом, если хватает прогмемы - есть фильтр Калмана, упрощенный
Sergey
нет :) еспшка шлет на сервак в базу эт овообще тут не важно у него болячки с резкими коллизиями и долгим возвратом
Andrey
это называется "фильтрация" :)
Sergey
и он реагирует на выбросы а надо их убирать вообще как класс
Andrey
можно подумать, скользящее окно будет резче и динамичнее
Sergey
нет там есть аномалия при определенном стечении обстоятелств он сильно разгоняется
Andrey
кхм... значит я в нее не попал еще
Anonim
пункты 4-5 будут очень забавно работать при динамическом осреднении