Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка данных цифровых сигналов, обработка графика уровня жидкости 
:(
    Опции темы
yogin
Дата 22.3.2012, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 23.12.2007

Репутация: нет
Всего: нет



Приветствую!
Существует такая задача:
Есть данные измерения объёма топлива в баке, но от того, что жидкость почти постоянно пребывает в неспокойном состоянии(волны от качки), то данные объёма получаются очень динамичными, как показано на графике:

user posted image

Можно заметить что топливо постепенно убывает, а потом возрастает(заправка).
Требуется сгладить график до монотонноубывающего тренда при расходе топлива исключая моменты простоя и заправки.
Я пробовал уже по разному, но все обработки начинаю представлять из себя алгоритмы на частыне случаи, да ещё в результате вся обработка начинает занимать длительное время.

Как это сделать? 
Существуют ли подходящие алгоритмы?
Какую литературу стоит почитать по поводу обработки таких измерений или по обработке графиков такого типа...

Это сообщение отредактировал(а) yogin - 22.3.2012, 10:53
PM MAIL   Вверх
_Y_
Дата 22.3.2012, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Если по-уму, то нужно отфильтровывать высокочастотные шумы, наверное. Стандартная задача.

Но встает вопрос. А чем обычное усреднение по N соседним точкам не годится?

ЗЫ: Судя по графику измерения проводятся раз в несколько минут. Разве такое бывает? Или там в багажнике около бензобака мужик с мерной рейкой сидит. Опустит рейку в бак, послюнявит химический карандаш и нанесет точку на график smile 


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Lipetsk
  Дата 22.3.2012, 11:51 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


в форме ;)
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 28.1.2009
Где: Липецк

Репутация: 2
Всего: 5



да, к бензину это вряд ли имеет отношение, т.к. не может так сильно "качать", и заправляют машину не во время простоя, на заправку ездят
PM   Вверх
yogin
Дата 22.3.2012, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 23.12.2007

Репутация: нет
Всего: нет



Цитата

ЗЫ: Судя по графику измерения проводятся раз в несколько минут.

от 4 секунд до 10 секунд интервал между точками.
Цитата

А чем обычное усреднение по N соседним точкам не годится?

да сглаживает всё в результате да и всё... грубо сглаживает
Цитата

да, к бензину это вряд ли имеет отношение, т.к. не может так сильно "качать"

конееечно, Вам виднее)
Цитата

и заправляют машину не во время простоя, на заправку ездят

А на заправке-то она не стоит чтоли?  smile 

Кстати: это ТС(транс. средство) заправляют там, где оно встало, именно поэтому на графике перед заправкой ясно видна протяжённость простоя.

Это сообщение отредактировал(а) yogin - 22.3.2012, 12:46
PM MAIL   Вверх
_Y_
Дата 22.3.2012, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Lipetsk @  22.3.2012,  11:51 Найти цитируемый пост)
не может так сильно "качать"

Если попадется где-то коллекционная Волга ГАЗ-21 или Победа - взгляните)))) На них фактически прочитать показания топливоуказателя можно было только после пары минут стояния. Но именно коллекционная чтобы датчики родные были, а не от оппеля какого современногго smile 

Я так понимаю, что на современных автомобилях эти показания сглаживаются и может даже инерционностью самого поплавка, а может и численно (так дешевле).


Цитата(yogin @  22.3.2012,  11:55 Найти цитируемый пост)
от 4 секунд до 10 секунд интервал между точками.

В этом и проблема. Если время измерения миллисекунды, а интервал между измерениями секунды получается датчик случайных значений с неким куполообразным распределением. Волны с частотой 0,05ГЦ только в океане разве - точно не в баке (эту частоту я взял из соображений критерия Нилквиста - чтобы хоть как-то отобразить колебания частота измерений должна быть минимум вдвое больше частоты колебаний). Думаю, если удастся измерять чаще (не думаю, что сегодня можно найти датчик не позволяющий поднять частоту больше 0,25ГЦ), то N в окне сглаживания можно будет существенно уменьшить и, таким образом, избежать грубого сглаживания всего на свете.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
yogin
Дата 22.3.2012, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 23.12.2007

Репутация: нет
Всего: нет



Цитата(_Y_ @ 22.3.2012,  16:26)
Думаю, если удастся измерять чаще (не думаю, что сегодня можно найти датчик не позволяющий поднять частоту больше 0,25ГЦ), то N в окне сглаживания можно будет существенно уменьшить и, таким образом, избежать грубого сглаживания всего на свете.

Нет, записывать измерения чаще не получится, таков прибор. Измерения записывает контроллер, у которого задача такая - не чаще чем раз в 10 секунд(но иногда бывает и чаще) и не реже(реже 10 сек точно не бывает).
Отсюда кстати ещё и возможности глюков появляются.
PM MAIL   Вверх
Mirkes
Дата 22.3.2012, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Вообще говоря убывание бензина в баке функция монотонная. В ней возможны только участки постоянства. К тому же убывает довольно медленно. Усреднение по N очкам должно работать как часы. можно добавить немного мозгов к этому фильтру: если обнаружен участок неизменности (остановились и заглушили движок), то можно перестать сглаживать.
Я не понимаю, что означает термин "грубо" сглаживает. Поскольку точность измерения крайне низка вследствие низкой частоты измерений, то "грубый" сглаженный график вполне точно укладывается в точность измерения. Хотеть получить точность больше, чем при измерении, конечно можно, но чудес не бывает smile

Поясните, пожалуйста, чем Вас не устраивает линейная фильтрация?


--------------------
Mirkes
PM MAIL   Вверх
ФедосеевПавел
Дата 22.3.2012, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: нет
Всего: 10



В бумажном каталоге продукции ОВЕН даётся описание двух фильтров и опционального дополнения к одному из них. Скорее всего, эти описания (на русском языке) присутствуют и в pdf к соответствующим приборам этой фирмы (наподобие, измерителей регуляторов).

Фильтры:
1. Фильтрация усреднением (скользящее среднее). Для неё задаются два параметра - время опроса датчика и глубина фильтра (N-количество точек для сглаживания).
2. Фильтр 1-го порядка. Для него задаются также два параметра - время опроса датчика и постоянная времени фильтра. Вместо постоянной времени фильтра в практических расчётах можно использовать коэффициент демпфирования (сглаживания). Выглядит формула так Vcurr:=Vprev+Kd*(VcurrIzm-Vprev), где Kd - коэффициент демпфирования, Vprev - значение измеряемой величины (сглаженное) на предыдущем измерении, VcurrIzm - текущие показания датчика, Vcurr - текущее  сглаженное значение измеряемой величины. Варьируя Kd можно добиться удовлетворительного сглаживания.
Ещё этот фильтр можно встретить в таком виде Vcurr:=Vprev+(VcurrIzm-Vprev)/Kd.

Дополнение "полоса фильтра". Самостоятельно этот метод не используется - только в комбинации с одним из фильтров. Идея состоит в том, что для измеряемой величины задаётся "окно", в пределах которого она может измениться к следующему измерению с учётом небольших помех. Если показания датчика попадают в "окно", то они поступают дальше на фильтр. Если показания в "окно" не попали, то новое значение игнорируется и считается, что параметр не изменился.

Полагаю, что стоит попробовать посчитать графики с разными настройками фильтров на экспериментальных данных в какой нибудь математической среде или в Ёкслеле.

P.S. Я не думаю, что нужно увеличить частоту измерений - сам параметр изменяется довольно медленно и датчик явно успевает его отслеживать. А помеха - всё равно является стохастической величиной, вне зависимости от частоты измерений.
-----------------------------
Пока я набирал, уже ответил Mirkes. Я полностью поддерживаю его точку зрения.

Это сообщение отредактировал(а) ФедосеевПавел - 22.3.2012, 19:46
PM   Вверх
Pavia
Дата 22.3.2012, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



yogin, 
1) Выделить участки без простоя, для этого можно найти участки с простоем. 
2) Сгладить, можно скользящим средним.  Размер ядра подобрать опытным путём. В случае выхода ядра за диапозон монотонно убывающего считать сигнал равный постоянному с этого конца. Либо если не устроит результат в 2 прохода 1 находим среднюю скорость убывания и интерполируем концы согласно этой скорости. Тем самым функция будет более резкой.

Цитата

Я пробовал уже по разному, но все обработки начинаю представлять из себя алгоритмы на частыне случаи, да ещё в результате вся обработка начинает занимать длительное время.

ЦОС она вся частный случаи.  Одного алгоритма на все случаи жизни нет. Есть обобщающие алгоритмы, но их так много что тоже можно считать просто частными случаеми.
По поводу длительного времени, это оптимизировать надо. А так вообще алгоритм сглаживание скользящим средним имеет сложность O(N), не зависит от радиуса.

По поводу обобщения алгоритмов можно сделать адаптивное сглаживание. К примеру выбрав радиус размытия из сходя из дисперсии. Или после БПФ найти минимум после горки(на графике хорошо будет видно частоту среза).
Правда в данном случае я бы просто взял радиус фильтера скользящего среднего по больше раз в 10 и всё.

PM MAIL   Вверх
maxim1000
Дата 23.3.2012, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



я бы ещё попробовал медианный фильтр - он меньше страдает от случайных выбросов


--------------------
qqq
PM WWW   Вверх
Mirkes
Дата 26.3.2012, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 4
Всего: 17



Если не жалко, скиньте какой-нибудь файл исходных сигналов. Я попробую поиграть с ним и посмотреть что получится.


--------------------
Mirkes
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1055 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.