Как получить усредненное значение?

Тема в разделе "Arduino & Shields", создана пользователем ToxaRU, 6 мар 2016.

  1. ToxaRU

    ToxaRU Гик

    Помогите плиз... У меня стоит задача получить более четкое значение с магнитометра.. после филтрации и компенсации в скетче получаем переменную-которая все равно при наклонах плавает, так вот хочу сделать так чтобы данные на протижении допустим 5 сек собирались(переменная) вычислялась средняя арифметическая и после этого записывалась в другую переменную.. Кто поможет разобраться? плиз
     
  2. Onkel

    Onkel Гуру

    вычисляйте экспоненциальную скользящую среднюю, для этого достаточно освежить память о ней в вики
     
  3. ToxaRU

    ToxaRU Гик

    был бы очень благодарен за фрагмент кода. Но если нет , то все равно спасибо-будем читать))
     
  4. Onkel

    Onkel Гуру

    формула устроит? Если постоянная усреднения n, значение в памяти X, полученное значение х, то новое значение
    X= X+2(x-X)/(1+n)
    т.е. при каждом новом измерении вы добавляете к среднему 2(x-X)/(1+n), (x-X)- просто разница между полученным значением и средним, хранящимся в памяти. Нулевое значение (в начале работы программы) можно просто выставить равным полученному значению.
     
    Tomasina и ToxaRU нравится это.
  5. ToxaRU

    ToxaRU Гик

    Спасибо... буду сидеть с кодом разбираться))
     
  6. ToxaRU

    ToxaRU Гик

    Что то по моему не то получается... тут будет вычисляться средняя с момента запуска, а это получится в моем случае ерунда-у меня динамическая система и при повороте и вычислении средней с момента старта получатся совсем неправильные координаты. сут в том чтобы данные за промежуток времени писались (не от старта) и после этого промежутка координата записывалась в переменную... ну и по новой... то есть мы сгладим скочки координат за этот кусок времени....мне скорост ненужна, а главное как можно точнее координату при наклонах кратковременных получать... Я не прав?
     
  7. Onkel

    Onkel Гуру

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