2014 dxdy logo

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

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


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


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



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


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

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

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

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

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

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

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

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

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


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

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


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

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


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

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


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

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

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


17/10/16
5199
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
161
Спасибо большое, 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
5199
zgemm
Я знаю, что всегда есть соблазн решить проблему программными средствами вместо улучшения аппаратного решения. Вот тут как-будто именно такой случай.

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

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


27/08/16
11503
...

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

-- 10.01.2025, 17:53 --

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

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


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

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


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

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

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


29/01/09
775
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
10188
Москва
Это достаточно распространённый приём. Например, при расчёте мгновенной частоты через преобразование Гильберта.
Вообще же вопрос анализа угловых наблюдений разработан.
Например
https://www.twirpx.cc/file/3645999/
и более новое (на английском)
https://www.twirpx.cc/file/2040334/

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

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



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

Сейчас этот форум просматривают: B@R5uk


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

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