|
Усреднение периодической величины |
|
|
|
Nov 25 2011, 14:30
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(fontp @ Nov 25 2011, 19:26)  Где вы предлагали смещать интервал? Не вижу. Вы же рассматривали стандартный интервал [0, 360] или аналогичный, а я предложил убрать разрыв от данных подальше. Проблема же в точке разрыва. в самом первом моём посте. Цитата(GetSmart @ Nov 25 2011, 00:30)  Проще можно так. Если конечно фаза не скачет по всему кругу. Перед прибавлением очередного значения к сумме, новое значение корректируется на -360 или 0 и выбирается ближайшее. Потом, результат можно так же скорректировать на -360, если он превысит 360 (360*N). Или на +360, если он будет отрицательным, а нужен положительный. Это и есть взять ближайшее в окресности +-180 от текущего. Сразу оптимизированно без делений и модулей. А потом контролировать текущий аккум как раз чтобы не приходилось делать лишние деления. Как и просил ТС Цитата желательно простой арифметическо-логический.
Сообщение отредактировал GetSmart - Nov 25 2011, 14:31
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 25 2011, 14:35
|

Эксперт
    
Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183

|
QUOTE (GetSmart @ Nov 25 2011, 16:49)  А свёртка это вообще жесть. Причём свёртка будет каждого элемента в гистограмме. Хотя результат вобщем достоверный. Но сложение векторов в декартовых координатах будет явно проще. А почему жесть? Если напрягают вычисления можно взять очень грубую гистограмму. Можно и свертку не делать. На этом этапе нужно всего лишь определить среднее грубо, чтобы знать где окружность разрезать QUOTE (GetSmart @ Nov 25 2011, 17:30)  в самом первом моём посте. Это и есть взять ближайшее в окресности +-180 от текущего. Если так - то извиняйте. Если это так, то значит не понял Вашу довольно мутную фразу QUOTE (GetSmart @ Nov 25 2011, 17:30)  Сразу оптимизированно без делений и модулей. А потом контролировать текущий аккум как раз чтобы не приходилось делать лишние деления. Как и просил ТС Уже объяснял, что нет никаких там делений. Взять по модулю 360 - это 2 if (в контексте + 180 даже 1). И где бы окружность не разрезать, приведение к любому интервалу это 2 if + пара арифметических операций
|
|
|
|
|
Nov 25 2011, 14:54
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(fontp @ Nov 25 2011, 19:35)  Если это так, то значит не понял Вашу довольно мутную фразу Бывает. Написав сразу оптимизированный алгоритм, забыл раскрыть тему в камментах. На английском  Цитата(fontp @ Nov 25 2011, 19:35)  А почему жесть? Если напрягают вычисления можно взять очень грубую гистограмму. Можно и свертку не делать. На этом этапе нужно всего лишь определить среднее грубо, чтобы знать где окружность разрезать Это непонятно. Определить нужно минимум сглаженной функции на круговой гистограмме. И если делать свёртку, то кол-во только умножений будет (кол-во всего углов)*(кол-во элементов гистограммы). Причём реальный минимум может оказаться там, где элемент на гистограмме пустой. А как это всё оптимизировать и угрубить без ущерба - не очень ясно. Возьмём например 5 элементов 0,90,180,270 и 45.
Сообщение отредактировал GetSmart - Nov 25 2011, 17:24
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 25 2011, 15:28
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Сложность свёртки с окном Ханна — 7 умножений на отсчёт, независимо от размера фильтра. Число отсчётов равно числу бинов в гистограмме, а не числу углов. Свёртка делается один раз, для окончательно построенной гистограммы. Если максимум на пустом элементе — ничего страшного, на точности алгоритма это не скажется, в т.ч. для ваших пяти элементов. Цитата(fontp @ Nov 25 2011, 18:35)  Если напрягают вычисления можно взять очень грубую гистограмму. Можно и свертку не делать. Можно и не делать, но лучше сделать — хотя бы с прямоугольным окном, покрывающим где-нибудь 1/3 всей гистограммы. Сложность — 0 умножений, 2 сложения на бин гистограммы.
Сообщение отредактировал Alexey Lukin - Nov 25 2011, 15:29
|
|
|
|
|
Nov 25 2011, 17:19
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (Brains @ Nov 24 2011, 22:47)  У меня есть периодическая величина, значение которой нужно усреднить средним арифметическим (X1+X2+..+Хn)/n - в простейшем случае (Х1+Х2)/2. На мой взгляд, проблема находится в математической постановке задачи. Формулировка "есть периодическая величина" или неполна (точнее "есть периодическая случайная величина") или вообще величина неслучайная, т.е. функция. Усреднять можно всё что угодно, например синус - тоже 2-пи периодическая функция, но она не имеет разрыва в +/-пи/2. Пила (рэмп) имеет разрыв в 2 пи. Но усреднение само по себе устраняет информацию о разрывах - как любая интегральная оценка. В первом варианте (случайная величина) среднее просто должно быть поставлено в зависимость от _желаемой_ (известной до усреднения) точки разрыва, а значение случайной величины в окрестности точки разрыва нужно модифицировать так, чтобы устранить разрыв. Естественно, что разрыв нужно ещё как-то разумно выделить - например, по величине "производной" (конечно, это не производная), т.е. по величине конечной разности. Например, используются N значений для усреднения, тогда нужно вычислить (N-1)+(N-2)+...+ 1 = N*(N-1)/2 разностей и проверить каждую на превышение заранее заданного порога, и если он превышен, то из большей величины вычесть период. Причём нужно учитывать, что для остальных пар значение разностей может измениться! Плохое свойство периодических (или ограниченных) случайных величин в том, что дисперсия ограничена интервалом и не всегда можно наверняка выделить разрыв. Например, в генераторах равномерно распределённых псевдослучайных чисел (от 0 до M) никто же не пытается искать разрывы, хотя их принцип действия (алгоритм) очень от разрывов зависит, например в конгруэнтных генераторах. Если дисперсия много меньше интервала, то разрыв можно легко опознать и устранить. Если наоборот, дисперсия сравнима или "больше" (она, конечно, не может стать больше, это некая натяжка, когда величина меняется сразу на несколько периодов) то сложно - невозможно! надёжно выделить разрыв.
Сообщение отредактировал AndrewN - Nov 25 2011, 17:31
|
|
|
|
|
Nov 25 2011, 17:31
|

Частый гость
 
Группа: Участник
Сообщений: 159
Регистрация: 3-01-11
Пользователь №: 62 000

|
Цитата(AndrewN @ Nov 25 2011, 21:19)  Формулировка "есть периодическая величина" или неполна (точнее "есть периодическая случайная величина") или вообще величина неслучайная, т.е. функция. Под "периодической величиной" автор темы имеет в виду не периодический по времени сигнал, а закольцованную область значений сигнала. При этом отсчёты сигнала по времени могут быть случайны и их порядок не важен.
|
|
|
|
|
Nov 25 2011, 17:37
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (Alexey Lukin @ Nov 25 2011, 21:31)  Под "периодической величиной" автор темы имеет в виду не периодический по времени сигнал, а закольцованную область значений сигнала. При этом отсчёты сигнала по времени могут быть случайны и их порядок не важен. Числа появляются в процессе измерения. Они вполне себе могут быть или коррелированы или просто функция времени. Неважность порядка я учел в количестве пар из N измерений, если учитывать порядок, то достаточно (N-1) пары. И, кроме всего прочего, понятие разрыва имеет смысл всё-таки для функции, но не для "истинно" случайной величины...
Сообщение отредактировал AndrewN - Nov 25 2011, 17:45
|
|
|
|
|
Nov 25 2011, 20:09
|
Местный
  
Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961

|
QUOTE (Brains @ Nov 24 2011, 21:47)  Алгоритм нужен для целочисленного МК, желательно простой арифметическо-логический. Очень много хороших идей было высказано, что в итоге подвело меня к выводу, что самое вычислительно легкое (считая, что точность данных измерения - 1 градус, соответственно, таблица синусов в 90 входов) решение - усреднять тригонометрические функции. Они непрерывны, в отличие от угла. Осталось доказать, что среднее косинуса равно косинусу среднего угла.
|
|
|
|
|
Nov 25 2011, 21:28
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(Brains @ Nov 25 2011, 02:28)  Про это понял. Я кое-что не учёл. Кроме "кастинга" со смещениями -360 и 0 нужно ещё +360. То есть из трёх углов берётся ближайший к текущему. Это если первым (или текущим) будет угол >180, а новый появится допустим 0. В этом случае брать нужно угол 0+360. И диапазон аккума лучше наверное держать в положительных числах. Upd. Лучше даже так. Держать диапазон акка в -180..+179. А диапазон новых углов 0..359. Тогда "кастинг" будет только с двумя значениями - реальным и сдвинутым на -360. Это значит, если первым был угол 200, то акк сразу скорректирует его в -160.
Сообщение отредактировал GetSmart - Nov 25 2011, 21:39
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 26 2011, 08:39
|
Группа: Участник
Сообщений: 8
Регистрация: 16-09-09
Пользователь №: 52 413

|
Спасибо всем участникам обсуждения темы! В обсуждении появлялись фразы о том, что нужно закладываться на случаи разбега фазы по всем квадрантам, или погрешности измерения в 1 градус. Для того, чтобы прояснить детали задачи, я нарисовал две картинки, объясняющие процесс:
Джиттер в 1 градус был указан мною только для примера. На самом деле достигается погрешность 0,1 градуса. Но дело не в этом: какой бы мизерной ни была бы погрешность, всегда в случайном процессе (шум) возникнут условия "гонки". Особая благодарность GetSmart! Ваш метод буду пробовать "в железе".
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|