Здравствуйте, kov_serg, Вы писали:
_>Здравствуйте, AlexNek, Вы писали:
AN>>Здравствуйте, kov_serg, Вы писали:
AN>>>>Так и без термометра ясно, что некоторые измерения выбиваются из правильного ряда. _>>>Разберите один датчик и по даташитам посмотрите характеристики. AN>>А не нужно ничего разбирать, в дорогих сенсорах один датчик внешний "на шнурочке" точность измерения ± 0,5°C градуса в диапазоне -50…+110°C. Никаких данных нет, просто железный цилиндрик. Других для отопительной батареи просто нет. AN>>Image: sensor-extb.jpg _>Так вы температуру батарей измеряете.
Еще улица и комната.
Датчики бывают аналоговые и цифровые, аналоговые измеряют или сопротивление или миливольты у них еще наводки могут быть. _>Возьмите вольтметр и измерте потенциал на конца положив датчик в кружку с кипятком. Если датчики дешовые то скорее всего аналоговые. _>Более того если вам надо много термопар то они делается в домашних условиях, только каждый калибровать придётся.
И куда я их потом засуну?
_>>>... вообще вариантом много. Можно построить модели и предсказывать значения, но у вас скорее всего датчики гавно. AN>>Скорее всего сервер дуреет, но мне в принципе не играет роли кто дуреет. Всё что я могу изменить — это моя прога. _>Сложилось впечатление что именно вы купили этот набор для измерений.
Так этот набор по всему миру продается, только софт там мне совсем не подходит. Но похоже "фильтр" у них там стоит на входе.
AN>>Arduino отмёл сразу, как только нашел, что в последнюю малину можно грузить проги на шарпе, да и она мне больше понравилась как "серверный комп". _>У меня сервером трудится такое http://www.orangepi.org/orangepiplus2/ в ней гигабит и сата (правда по усб шине). Но для простых задач arduino самое оно по функционал/цена
Не хочу, я ни Яву ни Плюсы.
AN>>Если бы я занимался разработкой железа, то может быть что то и сфарганил. Была бы хоть среда разработки готовая. А так, гораздо проще купить готовое, а после просто докупать датчики. _>Может проще купить вменяемые датчики и потом не заниматься шаманством с привлечением фаз луны и высшей математики. _>Для ардуино есть ide сделана всё так что даже школьники успешно справляются. Для быстроко прототипирования очень удобно. Там обычный C++ можно даже сказать C с классами. Но полёт фантазии не ограничивает.
Датчики куда подключать? По кабелю? Требование было моё чтобы датчик был автономный + радиоканал. Для этого нужен контроллер с обвязкой. Хотя можно было взять и готовые датчики, но непонятно было как сделать "приемник"
Так а где особое шаманство? В общем всё работает, просто хочется большего. А так еще и с железом нужно было постоянно разбираться.
Здравствуйте, AlexNek, Вы писали:
AN>Здравствуйте, С3141566=Z, Вы писали:
СZ>>Здравствуйте, AlexNek, Вы писали: AN>... СZ>>Так Ransac, не? AN>надо глянуть. AN>https://ru.wikipedia.org/wiki/RANSAC AN>хотя сразу смущает пункт 2 AN>"функция M , позволяющая вычислить параметры θ модели P по набору данных из n точек"
Примени простейшую модель -- сколько то низких гармоник с коеффициентами (параметры модель) или аторегрессионку низкого порядка. , поскольку данные в целом гладкие, то она их схватит. Пилу выкинет, естественно.
... AN>Датчики куда подключать? По кабелю? Требование было моё чтобы датчик был автономный + радиоканал. Для этого нужен контроллер с обвязкой. Хотя можно было взять и готовые датчики, но непонятно было как сделать "приемник"
Есть куча готовых радио модулей https://uscr.ru/podklyuchenie-radio-modulya-nrf24-k-arduinohttps://geektimes.ru/post/255754/
даже gsm модем можно при желание подключть https://geektimes.ru/post/243033/http://www.2150692.ru/faq/46-sim800l-arduino
AN>Так а где особое шаманство? В общем всё работает, просто хочется большего.
Как где шаманство, плавают показания вашиъ датчиков и вы валите это почему-то на софт. И хотите выличит это присыпками, чем не шаманство. Метрология шаманства не любит. AN>А так еще и с железом нужно было постоянно разбираться.
А вы как хотели
Здравствуйте, AlexNek, Вы писали:
AN>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд. AN>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.
Если есть модель (а судя по "измерения довольно хорошо могут описываться кривыми" она есть), то можно использовать фильтр калмана, он широко применяется, например, в робототехнике для определения местоположения:
Kalman filtering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of measurements observed over time, containing statistical noise and other inaccuracies, and produces estimates of unknown variables that tend to be more precise than those based on a single measurement alone
То бишь клиентом тоже ардуино с 4 батарейками АА? По цене конечно дешевле малины, но сравнить по размеру с фирменным датчиком, где 2 ААА стоит
AN>>Так а где особое шаманство? В общем всё работает, просто хочется большего. _>Как где шаманство, плавают показания вашиъ датчиков и вы валите это почему-то на софт. И хотите выличит это присыпками, чем не шаманство. Метрология шаманства не любит.
нифига сами датчики не плавают, а вот на помеху — да похоже. С каких пор датчики пилой стали плавать?
AN>>А так еще и с железом нужно было постоянно разбираться. _>А вы как хотели
Купить, поставить и не трогать. С железом я давно завязал и совсем не хочется возвращаться.
Здравствуйте, StanislavK, Вы писали:
SK>Здравствуйте, AlexNek, Вы писали:
AN>>Есть некие датчики передающие измерения через определённый интервал времени t +-x секунд. AN>>Хотелось бы отсеять неправильные данные. Но что то слишком сложно получается.
SK>Если есть модель (а судя по "измерения довольно хорошо могут описываться кривыми" она есть), то можно использовать фильтр калмана, он широко применяется, например, в робототехнике для определения местоположения: SK>
SK>Kalman filtering, also known as linear quadratic estimation (LQE), is an algorithm that uses a series of measurements observed over time, containing statistical noise and other inaccuracies, and produces estimates of unknown variables that tend to be more precise than those based on a single measurement alone
SK>https://en.wikipedia.org/wiki/Kalman_filter
SK>про него дофига есть всяких публикаций.
Что то припоминаю. Похоже можно будет использовать при вводе новых данных.
Но не хочу метаться туда/сюда. Я пока другое пробую.
Здравствуйте, AlexNek, Вы писали:
AN>Вообще-то специально хотел более обобщенно. Так как пойдут решения для показанных частей. И в принципе то "сложное" решение вроде как понятно. Интересуют самые простые и примитивные варианты.
Простейший вариант: значение отсчёта равно половине суммы измеренного отсчёта и предыдущего вычисленного отсчета. Т.е. m_nValue = 0.5*nNewValue + 0.5*m_nValue;. Понятно, что коэффициенты можно взять другие.
Здравствуйте, B0FEE664, Вы писали:
BFE>Простейший вариант: значение отсчёта равно половине суммы измеренного отсчёта и предыдущего вычисленного отсчета. Т.е. m_nValue = 0.5*nNewValue + 0.5*m_nValue;. Понятно, что коэффициенты можно взять другие.
Это не поможет. Получится просто огибающая пилы, но тоже пила.
Вот картинка со сдвигом на сутки. Выглядит как кривая пост обработка сигнала.
Самое простое взять четные и нечетные измерения по отдельности и будет красота
Здравствуйте, kov_serg, Вы писали:
BFE>>Простейший вариант: значение отсчёта равно половине суммы измеренного отсчёта и предыдущего вычисленного отсчета. Т.е. m_nValue = 0.5*nNewValue + 0.5*m_nValue;. Понятно, что коэффициенты можно взять другие.
_>Это не поможет. Получится просто огибающая пилы, но тоже пила.
В обобщенном случае — поможет, но вам нужно что-то другое, как мне кажется. Если у вас действительно одни отсчёты намного более частые, чем другие, то можно просто усреднить: сложите все отчёты за 20 минут и разделите на их количество — получите средний результат за 20 минут. Следующие 20 минут опять накапливаете данные и по истечении выдаёте среднее значение. Если за 20 минут у был один отсчёт — его и получите. Соответственно то, что датчик был перемещён, можно будет увидеть через 20 минут.
_>Вот картинка со сдвигом на сутки. Выглядит как кривая пост обработка сигнала.
Возможно, но и другие варианты исключить нельзя.
_>Самое простое взять четные и нечетные измерения по отдельности и будет красота
А нужна красота или реальность?
Здравствуйте, B0FEE664, Вы писали:
BFE>В обобщенном случае — поможет, но вам нужно что-то другое, как мне кажется. Если у вас действительно одни отсчёты намного более частые, чем другие, то можно просто усреднить: сложите все отчёты за 20 минут и разделите на их количество — получите средний результат за 20 минут. Следующие 20 минут опять накапливаете данные и по истечении выдаёте среднее значение. Если за 20 минут у был один отсчёт — его и получите. Соответственно то, что датчик был перемещён, можно будет увидеть через 20 минут.
Не поможет будет лютое усреднение все пики лягут. Более того будет отставание если в realtime делать, теже 20мин (~6 точек)
_>>Вот картинка со сдвигом на сутки. Выглядит как кривая пост обработка сигнала. BFE>Возможно, но и другие варианты исключить нельзя.
Да фигня. Протокол с контрольной суммой http://wmrx00.sourceforge.net/Arduino/OregonScientific-RF-Protocols.pdf плавает очень специфично. Если бы были помехи
то правание было бы сколь-нибудь случайным. А тут 146% софт сбора данных кто-то по пьяни делал.
_>>Самое простое взять четные и нечетные измерения по отдельности и будет красота BFE>А нужна красота или реальность?
Вы не поняли. Там измерения через 3мин 12сек (примерно 500 точек сутки) если мерить с шагом в 6мин всё зебест, но имеем два графика, причем разных О чем это говорит? Там два разных датчика и софт их не различает (либо разных фильтра). Другой вариант просто out of bounds местами.
Что то тема опять всплыла, так что немного расскажу о продвижках.
Прежде всего тем кому интересна подобная тема, могу порекомендовать Math.NET Numerics
Там есть одна довольно удобная функция Interpolate.CubicSplineRobust, которая вроде справляется с данной задачей нормально.
однако, если глянуть на зеленные точки (они правда не все видны), где то я нахомутал видимо. Но пока нет времени разбираться.
В процессе экспериментов выяснилось, что "чистые" статистические методы не подходят — дают слишком большой разрешенный диапазон.
Делал так:
Вначале поделил данные на "хорошие" и "плохие". "Хорошие" (Ок), те в которых девиация интервала передачи входит в доверительный диапазон и "плохие"(Nok) — все остальные.
Затем "заполнял" "плохие" промежутки интеполированными данными и удалял плохие "данные". Ведь в итоге нужно обновить базу данных, не добавляя новых записей.
Здравствуйте, AlexNek, Вы писали:
AN>Что то тема опять всплыла, так что немного расскажу о продвижках.
...
o_O лёккое недоумение. Вы умеете строить не информативные графики. (на будующее оси и единицы измерения обязательны)
AN>однако, если глянуть на зеленные точки (они правда не все видны), где то я нахомутал видимо. Но пока нет времени разбираться. AN>В процессе экспериментов выяснилось, что "чистые" статистические методы не подходят — дают слишком большой разрешенный диапазон.
...
Есть сглаживающие сплайны. Видимо вы их и применили. Но они вас не спасут. Просто попробуйте использовать точки через одну. Т.е. четные и нечетные измерения на два отдельных графика