2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 14:18 


23/02/23
141
Добрый день,

имеются реальные данные, в виде угла, который вычисляется как арктангенс отношения (то есть от минус Пи до плюс Пи). Данные получаются довольно зашумленными, то есть значения скачут примерно на 20-30%, а иногда могут скакнуть совсем далеко.

Угол всегда растет (от минус Пи до плюс Пи) и потом перескакивает назад в минус Пи и так далее.

Из-за шума перескок происходит иногда так, что приходят данные то близкие к плюс Пи, то близкие к минус Пи.

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

Понятно, что если бы это был бы не угол, а просто линейная функция, я бы делал МНК полиномом первой степени с каким-то убывающим весом на предыдущие значения.

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

Скажите, пожалуйста, а вот как проще поступить с таким перескоком?

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 14:24 


05/09/16
12204
zgemm
Какая-то вариация фильтра Калмана, вероятно.
https://ru.wikipedia.org/wiki/%D0%A4%D0 ... 0%BD%D0%B0
Про перескок отдельно надо думать.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 14:29 
Заслуженный участник
Аватара пользователя


16/07/14
9306
Цюрих
zgemm в сообщении #1669374 писал(а):
причем я знаю, что скорость меняется не быстро, но примерно на период она может поменяться на единицы процента
А что-то про характер этой зависимости известно?
Если она как-то параметризована, и надо найти параметры, то очевидный вариант - преобразовать угол и наблюдения в декартовы координаты, и строить МНК по ним.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 15:08 
Заслуженный участник
Аватара пользователя


11/03/08
10066
Москва
Простейший приём - избавиться от "минусов", прибавляя к углу $2\pi$ с каждым "перескоком". Превратив график из "зубчатки" в непрерывно растущую линию.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 15:18 


23/02/23
141
Спасибо большое! Да, я и писал, что МНК с убывающим весом пробовал, да, это что-то типа Кальмана.

Именно его с перескоком я уже попробовал, но не понимаю, как делать перескоки. У меня шумы большие. Скажем период - 100 точек. Из них первые 30 гуляют так, что их реальные значения должны быть на $-2\pi$ а последние 30 на $+2\pi$ исправлены. Эвристически я строил по старым значениям примерную аппроксимацию. Там, где значения существенно отличаются, я перескакивал. Попадается одна-две точки, которые как потом оказалась, у меня не правильно перескочили, и из-за этого весь МНК идет сильно вверх или сильно вниз и далее оно так по нарастающей и разбалтывается.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 15:28 


17/10/16
5051
zgemm
Я так понял, проблема в этом:
Изображение

Имеется идеальный сигнал об угле (синий), на который наложен шум (красная кривая, это то, что мы только и имеем). Синяя кривая идеально "перескакивает". А у красной в местах "перескока" возникает сильный "дребезг" угла, поскольку зашумленный сигнал многократно пересекает границу "инверсии".

Тут, наверное, просто с шумом лучше побороться на аппаратном уровне, если он такой, что мы даже не можем понять на 2/3 периода, нужно прибавить $\pi$ или отнять (или ничего не нужно делать).

Еще напрашивается что-то вроде гистерезиса, который допускает только одно "перескакивание". Например, если сигнал в какой-то момент превысил $\frac{\pi}{2}$, то происходит переключение на режим "далее всегда отнимать $\pi$ до тех пор, пока сигнал снова не превысит $\frac{\pi}{2}$". У такого алгоритма не будет дребезга, хотя некоторые значения будут выходить за пределы $-\frac{\pi}{2}...\frac{\pi}{2}$. Это, правда, уже сам источник сигнала об угле должен делать внутри себя.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 16:07 


23/02/23
141
Спасибо большое, sergey zhukov! Да, именно такой у меня дребезг. Поверх этого накладывается еще то, что период может удлиняться или укорачиваться примерно на 5-10%. Надо в реальном времени в каждый момент времени правильный угол и современную длину периода.

Я смотрю в сторону МНК, но такой, когда вместо евклидовой нормы из числа вначале вычисляется косинус или синус и потом применяется эта евклидова норма, то есть примерно так:

$$\min_{a,b} \sum_{n=0}^N q^n \sin^2(f_n - a n - b), ~~ q<1,$$
где $q$ - вес, чтобы учесть числа, которые далеки от измеряемых сейчас, а $a, b$ - то, что мне надо.

sergey zhukov в сообщении #1669384 писал(а):
Тут, наверное, просто с шумом лучше побороться на аппаратном уровне, если он такой, что мы даже не можем понять на 2/3 периода, нужно прибавить $\pi$ или отнять (или ничего не нужно делать).

не, на аппаратном уже все сделано, что можно. Это сигнал с мотора, вернее с катушек, который далее по известной формуле преобразуется в угол. Из-за того, что мотор в этот момент работает, там много переходных процессов и сигнал сильно зашумлен.

Пока эвристически наиболее хорошо угадывается точка перескока, если исходные данные аппроксимировать МНК с затуханием в один период), далее искать точку с максимальной производной, сдвигать все это на длину периода и, таким образом угадывать где добавлять два-пи, а где - нет, но пока все равно подглючивает, так как два МНК и пересчет периода - иногда приводят эту систему в ступор.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 16:29 


17/10/16
5051
zgemm
Я знаю, что всегда есть соблазн решить проблему программными средствами вместо улучшения аппаратного решения. Вот тут как-будто именно такой случай.

У меня знакомый один работает на разработке электрогидравлических манипуляторов. Так вместо того, чтобы обеспечивать поменьше люфты в механике и получше сигнал с датчиков положения, ему говорят "Ну ты же программист. Выправи кривую механику программно".

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 17:49 


27/08/16
10710
...

PS А вы на кого работаете?

-- 10.01.2025, 17:53 --

sergey zhukov в сообщении #1669388 писал(а):
Так вместо того, чтобы обеспечивать поменьше люфты в механике и получше сигнал с датчиков положения, ему говорят "Ну ты же программист. Выправи кривую механику программно".
Принцип SISO: Shit In - Shit Out.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 18:12 
Заслуженный участник
Аватара пользователя


11/03/08
10066
Москва
Переходите к разностям, если оказываются вне разумных пределов - корректируйте на $ 2\pi$

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 18:17 
Заслуженный участник


07/08/23
1251
Евгений Машеров в сообщении #1669400 писал(а):
Переходите к разностям, если оказываются вне разумных пределов - корректируйте на $ 2\pi$

В качестве разумных пределов можно даже взять $(-\pi, \pi)$. То есть если в соседних точках разница больше $\pi$ по модулю, то менять на $\pm 2 \pi$.

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение10.01.2025, 18:35 


29/01/09
759
zgemm в сообщении #1669374 писал(а):
Добрый день,

имеются реальные данные, в виде угла, который вычисляется как арктангенс отношения (то есть от минус Пи до плюс Пи). Данные получаются довольно зашумленными, то есть значения скачут примерно на 20-30%, а иногда могут скакнуть совсем далеко.

Угол всегда растет (от минус Пи до плюс Пи) и потом перескакивает назад в минус Пи и так далее.

Из-за шума перескок происходит иногда так, что приходят данные то близкие к плюс Пи, то близкие к минус Пи.

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

Понятно, что если бы это был бы не угол, а просто линейная функция, я бы делал МНК полиномом первой степени с каким-то убывающим весом на предыдущие значения.

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

Скажите, пожалуйста, а вот как проще поступить с таким перескоком?


У меня родственник с этой проблемой сталкивался , когда вряд конструировал навигацию своего домашнего робота . Все просто. Взято из диффрюкренциальной геометрии, а она из картографии. Вам уважаемый нужно две карты, если вы хотите углы измерять ( в принципе то не обязательно углы измерять можно и разности). Итак есть некий сырой сигнал. Сделайте его слаженную версию - по несу будете определять в какой карте работать. Обе карты по 4пи/3. Первая карта от -2 пи3 до 2пи/3. Та м можно просто брать сигнал с источников и обрабатывать. Вторая карта от пи/3 до 5 пи/3. Если вы работаете во второй карте и получаете отрицательный результат прибавояйик пи. Теперь о переключении кариесом ваш сглаженный сигнал в первой карте и переходит 2пи/3 в положительную сторону , или в отрицательную переходит-2пи/ 3 . Переходите во вторую карту. Если вы во второй карте и переходите пи/3 в отрицательную сторону или 5пи/3 в положительную переходите в первую карту. Это создаёт гистеризис и измерения будут непрерывными. В области пересечения карт- считаете оба сигнала, там где нет пересечения достаточно одного

PS

Смотрю не ч один вам один и тот же алгоритм предложили. Он просто на поверхности и вычислительно не ресуроемкий

 Профиль  
                  
 
 Re: Считать локальный наклон от измеряемого зашумленного угла
Сообщение11.01.2025, 06:29 
Заслуженный участник
Аватара пользователя


11/03/08
10066
Москва
Это достаточно распространённый приём. Например, при расчёте мгновенной частоты через преобразование Гильберта.
Вообще же вопрос анализа угловых наблюдений разработан.
Например
https://www.twirpx.cc/file/3645999/
и более новое (на английском)
https://www.twirpx.cc/file/2040334/

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group