На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Нахождение среднего угла
    Да, я уже понял что забыл про среднее арифметическое :D Извиняюсь за глупость)
      столкнулся с такой же проблемой при разработке метеостанции. данные об угле валятся каждые 5 секунд, и в т.ч. сколько отсчетов поступит к моменту отправки пакета (например на народный мониторинг) в общем тоже не известно. Пришел к такому способу усреднения: первый отсчет берется за базу. при поступлении следующего вычисляется дельта (разница) нового угла от базы и суммируется с предыдущими дельтами. Текущий средний угол получается суммой базы и среднего по дельтам. При вычислении разницы углов учитывается минимальное расстояние по кругу - то есть считаем разницу по часовой и разницу против часовой. Берем с наименьшим модулем. Так для примера 315 315 45 получим направление 345. При поступлении данных это выглядит как
      315 - > база 315, дельта 0, отсчетов 1
      315 - > дельта 0, отсчетов 2 - текущий угол 315 + 0/2
      45 -> дельта по часовой ((360-315)+45 = 90) дельта против часовой (360-90=270) берем 90 - текущий угол 315 + 90/3 = 345
      ...
      и так до момента фиксации пакета к отправке, дальше с начала
      Сообщение отредактировано: dvz -
        dvz
        А не проще сразу хранить текущий средний и количество имеющихся отсчётов? И соответственно при поступлении нового отсчёта пересчитывать текущее среднее (новое = предыдущее + дельта / кол.отсчётов)? При одном отсчёте в 5 секунд до значимой ошибки ждать придётся хренову тучу лет...
        Сообщение отредактировано: Akina -
          Раз подняли ветку, пусть тут будет ссылка на статью Circular Values Math and Statistics

          В частности, автор приводит расчет усреднения, свободный от недостатка векторного подхода, когда average(0+0+90)=atan(1/2)~25 градусов вместо 30 (сам не пробовал, чего-то у него функция возвращает set)
          Сообщение отредактировано: MBo -
            MBo
            Все три обсуждения в теме рассматривают задачу случайного направления при фиксированной точке измерения. Векторный же подход к усреднению - это совершенно иная задача.

            Добавлено
            dvz
            Хотя подумал - на реальных данных подход вполне себе, а вот на модельных может и косяка дать...
            Простейший пример - это отсчёты 0, 0 и 180... и вот что будет в итоге - 120 или 240,- я лично фиг знает.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0262 ]   [ 16 queries used ]   [ Generated: 28.03.24, 14:57 GMT ]