реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Усреднение периодической величины
GetSmart
сообщение Nov 25 2011, 14:30
Сообщение #16


.
******

Группа: Участник
Сообщений: 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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
fontp
сообщение Nov 25 2011, 14:35
Сообщение #17


Эксперт
*****

Группа: Свой
Сообщений: 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 + пара арифметических операций
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 25 2011, 14:54
Сообщение #18


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата(fontp @ Nov 25 2011, 19:35) *
Если это так, то значит не понял Вашу довольно мутную фразу

Бывает. Написав сразу оптимизированный алгоритм, забыл раскрыть тему в камментах. На английском sm.gif


Цитата(fontp @ Nov 25 2011, 19:35) *
А почему жесть? Если напрягают вычисления можно взять очень грубую гистограмму. Можно и свертку не делать. На этом этапе нужно всего лишь определить среднее грубо, чтобы знать где окружность разрезать

Это непонятно. Определить нужно минимум сглаженной функции на круговой гистограмме. И если делать свёртку, то кол-во только умножений будет (кол-во всего углов)*(кол-во элементов гистограммы). Причём реальный минимум может оказаться там, где элемент на гистограмме пустой. А как это всё оптимизировать и угрубить без ущерба - не очень ясно. Возьмём например 5 элементов 0,90,180,270 и 45.

Сообщение отредактировал GetSmart - Nov 25 2011, 17:24


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Nov 25 2011, 15:28
Сообщение #19


Частый гость
**

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



Сложность свёртки с окном Ханна — 7 умножений на отсчёт, независимо от размера фильтра. Число отсчётов равно числу бинов в гистограмме, а не числу углов. Свёртка делается один раз, для окончательно построенной гистограммы. Если максимум на пустом элементе — ничего страшного, на точности алгоритма это не скажется, в т.ч. для ваших пяти элементов.

Цитата(fontp @ Nov 25 2011, 18:35) *
Если напрягают вычисления можно взять очень грубую гистограмму. Можно и свертку не делать.

Можно и не делать, но лучше сделать — хотя бы с прямоугольным окном, покрывающим где-нибудь 1/3 всей гистограммы. Сложность — 0 умножений, 2 сложения на бин гистограммы.

Сообщение отредактировал Alexey Lukin - Nov 25 2011, 15:29
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Nov 25 2011, 17:19
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Nov 25 2011, 17:31
Сообщение #21


Частый гость
**

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



Цитата(AndrewN @ Nov 25 2011, 21:19) *
Формулировка "есть периодическая величина" или неполна (точнее "есть периодическая случайная величина") или вообще величина неслучайная, т.е. функция.

Под "периодической величиной" автор темы имеет в виду не периодический по времени сигнал, а закольцованную область значений сигнала. При этом отсчёты сигнала по времени могут быть случайны и их порядок не важен.
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Nov 25 2011, 17:37
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (Alexey Lukin @ Nov 25 2011, 21:31) *
Под "периодической величиной" автор темы имеет в виду не периодический по времени сигнал, а закольцованную область значений сигнала. При этом отсчёты сигнала по времени могут быть случайны и их порядок не важен.

Числа появляются в процессе измерения. Они вполне себе могут быть или коррелированы или просто функция времени.

Неважность порядка я учел в количестве пар из N измерений, если учитывать порядок, то достаточно (N-1) пары.

И, кроме всего прочего, понятие разрыва имеет смысл всё-таки для функции, но не для "истинно" случайной величины...


Сообщение отредактировал AndrewN - Nov 25 2011, 17:45
Go to the top of the page
 
+Quote Post
AndrewN
сообщение Nov 25 2011, 20:09
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 336
Регистрация: 7-03-07
Из: Петербург
Пользователь №: 25 961



QUOTE (Brains @ Nov 24 2011, 21:47) *
Алгоритм нужен для целочисленного МК, желательно простой арифметическо-логический.

Очень много хороших идей было высказано, что в итоге подвело меня к выводу, что самое вычислительно легкое (считая, что точность данных измерения - 1 градус, соответственно, таблица синусов в 90 входов) решение - усреднять тригонометрические функции. Они непрерывны, в отличие от угла. Осталось доказать, что среднее косинуса равно косинусу среднего угла.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 25 2011, 21:28
Сообщение #24


.
******

Группа: Участник
Сообщений: 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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Alexey Lukin
сообщение Nov 25 2011, 22:43
Сообщение #25


Частый гость
**

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



Цитата(AndrewN @ Nov 26 2011, 00:09) *
Осталось доказать, что среднее косинуса равно косинусу среднего угла.

Удачи! biggrin.gif
Go to the top of the page
 
+Quote Post
Brains
сообщение Nov 26 2011, 08:39
Сообщение #26





Группа: Участник
Сообщений: 8
Регистрация: 16-09-09
Пользователь №: 52 413



Спасибо всем участникам обсуждения темы!

В обсуждении появлялись фразы о том, что нужно закладываться на случаи разбега фазы по всем квадрантам, или погрешности измерения в 1 градус.
Для того, чтобы прояснить детали задачи, я нарисовал две картинки, объясняющие процесс:

Прикрепленное изображение
Прикрепленное изображение


Джиттер в 1 градус был указан мною только для примера. На самом деле достигается погрешность 0,1 градуса. Но дело не в этом: какой бы мизерной ни была бы погрешность, всегда в случайном процессе (шум) возникнут условия "гонки".

Особая благодарность GetSmart! Ваш метод буду пробовать "в железе".
Go to the top of the page
 
+Quote Post
qxov
сообщение Nov 28 2011, 08:49
Сообщение #27


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 22-03-07
Из: Санкт-Петербург
Пользователь №: 26 406



Можно перемножить два сигнала и считать скважность результата.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 14:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016