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

 
 
> Усреднение периодической величины
Brains
сообщение Nov 24 2011, 18:47
Сообщение #1





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



Доброго дня, форумчане!

У меня есть периодическая величина, значение которой нужно усреднить средним арифметическим (X1+X2+..+Хn)/n - в простейшем случае (Х1+Х2)/2.
Величина - это угол сдвига фаз, меняющийся от 0 до 359 градусов. Измерение ведется путем захвата таймером интервала времени между фронтами прямоугольных импульсов. При условии синфазности сигналов (должно измеряться значение 0 градусов), появляется неразрешимая пока мною проблема: из-за джиттера, являющегося следствием шума на входе, начинается гонка фронтов сигналов, при этом я получаю захваченные таймером интервалы, соответствующие углу в градусах, к примеру в такой последовательности: 1, 359, 1, 359.... Если попытаться усреднить эту последовательность, то получится значение 180 градусов, вместо ожидаемого нуля.
Вариант перехода к формату -180->0->+180 уже рассматривался, и он имеет такую же проблему при усреднении, возникающую в окрестностях 180 градусов (-179,+179 после усреднения дает 0 вместо 180).
Алгоритм нужен для целочисленного МК, желательно простой арифметическо-логический.
Какие есть варианты решения этой проблемы?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Brains
сообщение Nov 24 2011, 21:28
Сообщение #2





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



Цитата
Во-первых, "кастинг" должен быть именно с аккумулятором. Во-вторых, сравнивать нужно модуль, то есть abs(acc/n - X), либо abs(acc-X*n). Обычно проще и быстрее умножать, чем делить.

Про это понял.

Цитата
В-третьих, нужно контролировать диапазон аккумулятора, чтобы он был диапазоне 0..360*n. Иначе корректировать на -360*n, либо на +360*n.


А эту фразу нет. Вы имеете ввиду, что после каждого прибавления (и увеличения n на единицу) в аккумуляторе должно быть число не больше чем 360*n ?



Цитата
А если после каждого добавление аккума алгоритм считает среднее значение от акка, то так будет даже проще. Защита от переполнения не понадобится.


Этого, к сожалению, достичь нельзя, нет ресурсов для деления на любое число, а потому рассчитываю n как степень двойки, подбираю разрядность аккума для худшего случая, и после накопления 2^n отсчетов делю аккум сдвигами.
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Nov 24 2011, 21:33
Сообщение #3


.
******

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



Цитата(Brains @ Nov 25 2011, 02:28) *
А эту фразу нет. Вы имеете ввиду, что после каждого прибавления (и увеличения n на единицу) в аккумуляторе должно быть число не больше чем 360*n ?

Да. Причём акк может стать и отрицательным. И тогда его нужно увеличить на 360*n. Либо допускать отрицательные значения до -180*n. Тогда диапазон будет от -180 до +359(.9999). А каждое новое значение угла должно быть в диапазоне 0..359(.9999 если fixed point). И когда уже в акке накопится 2^k значений, и если акк отрицательный, то добавить к нему 360*(2^k) чтобы сдвигать исключительно положительные числа.

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


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Brains   Усреднение периодической величины   Nov 24 2011, 18:47
- - GetSmart   Вообще-то угол - это величина из двумерного простр...   Nov 24 2011, 19:30
- - Brains   ЦитатаПеред прибавлением очередного значения к сум...   Nov 24 2011, 20:10
|- - GetSmart   Цитата(Brains @ Nov 25 2011, 01:10) GetSm...   Nov 24 2011, 20:38
- - MKS   Можно от угла перейти к декартовым координатам (x,...   Nov 24 2011, 20:27
- - Brains   ЦитатаМожно от угла перейти к декартовым координат...   Nov 24 2011, 21:09
|- - GetSmart   Цитата(Brains @ Nov 25 2011, 02:09) Понят...   Nov 24 2011, 21:16
|- - GetSmart   Цитата(Brains @ Nov 25 2011, 02:28) Про э...   Nov 25 2011, 21:28
- - fontp   QUOTE (Brains @ Nov 24 2011, 21:47) Вариа...   Nov 25 2011, 07:54
|- - GetSmart   Цитата(fontp @ Nov 25 2011, 12:54) Можно ...   Nov 25 2011, 09:53
|- - fontp   QUOTE (GetSmart @ Nov 25 2011, 12:53) Вор...   Nov 25 2011, 13:16
|- - GetSmart   Цитата(fontp @ Nov 25 2011, 18:16) Это та...   Nov 25 2011, 13:49
|- - fontp   QUOTE (GetSmart @ Nov 25 2011, 16:49) Я т...   Nov 25 2011, 14:26
||- - GetSmart   Цитата(fontp @ Nov 25 2011, 19:26) Где вы...   Nov 25 2011, 14:30
|- - fontp   QUOTE (GetSmart @ Nov 25 2011, 16:49) А с...   Nov 25 2011, 14:35
|- - GetSmart   Цитата(fontp @ Nov 25 2011, 19:35) Если э...   Nov 25 2011, 14:54
- - Alexey Lukin   Есть способ лучше: построить гистограмму углов, сг...   Nov 25 2011, 08:17
- - Alexey Lukin   Сложность свёртки с окном Ханна — 7 умножени...   Nov 25 2011, 15:28
- - AndrewN   QUOTE (Brains @ Nov 24 2011, 22:47) У мен...   Nov 25 2011, 17:19
|- - Alexey Lukin   Цитата(AndrewN @ Nov 25 2011, 21:19) Форм...   Nov 25 2011, 17:31
|- - AndrewN   QUOTE (Alexey Lukin @ Nov 25 2011, 21:31)...   Nov 25 2011, 17:37
- - AndrewN   QUOTE (Brains @ Nov 24 2011, 21:47) Алгор...   Nov 25 2011, 20:09
|- - Alexey Lukin   Цитата(AndrewN @ Nov 26 2011, 00:09) Оста...   Nov 25 2011, 22:43
- - Brains   Спасибо всем участникам обсуждения темы! В об...   Nov 26 2011, 08:39
- - qxov   Можно перемножить два сигнала и считать скважность...   Nov 28 2011, 08:49


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 17:01
Рейтинг@Mail.ru


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