Перейти к содержанию
    

Восстановление угла вектора по проекциям

Добрый день!

 

Есть некоторый вращающийся вектор с амплитудой A и фазой f: A*exp(f*i). Мне поступают измерения его проекций, т.е. x=Acos(f) и y=Asin(f), нужно по этим измерениям восстановить угол f. Так как измерения могут быть немного зашумленные, да и по другим причинам, нахождение в лоб арктангенса не приветствуется, хочется использовать некоторый динамический фильтр-наблюдатель. Нашел наводку, что для решения этой задачи на практике часто используется Phased Locked Loop, но беглый поиск не привел к конкретным схемам/формулам, хотя, по ощущениям, это должно быть что-то очень стандартное. Не хочется самому изобретать велосипед, может кто-то подскажет решение?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно решить с помощью 2-х таблиц и, если надо, фильтра. В таблицах хранить значения угла, соответствующие отношению x/y и y/x (т.к. есть проблемы с арктангенсом 90 град.)...

 

А насчет PLL... Делаете генератор, управляемый сигналом ошибки с фазового детектора, на один вход которого измеряемый сигнал, а на другой сам генератор. Сигнал ошибки фазового детектора фильтруют. Вот посмотрите: http://www.dsplib.ru/content/dpll/dpll.html

Но для получения значения именно угла, вам всё равно придется считать арктангенс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для решения этой задачи на практике часто используется Phased Locked Loop

 

Понятие PLL ничего конкретного не означает. Обычно PLL+VCO это аналоговая схема, эмулировать же её в цифре глупо, поскольку в конечном итоге она представляет собой некий фильтр.

Правильнее сразу и делать фильтр традиционными методами.

А какой — целиком и полностью зависит от двух факторов::

- статистики искажений фильтруемого сигнала

- выбранного критерия оценки результата

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Чтобы из проекций получить угол, так или иначе придется выполнять операцию арктангенс или арксинус. Что с PLL, что без.

 

2. Прежде чем городить огород с PLL, стоит попробовать такую схему: отфильтровать каждую из проекций с помощью фнч, а лишь потом выполнять операцию арктангенса.

Выбор параметров фнч зависит от свойтсв сигнала и свойств шума и, как уже было сказано, критериев оценки результата

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще, если есть какие либо априорные знания о характере фазы на выходе алгоритма, можно сделать фильтрацию и после арктангенса. Например: известно, что у исходного сигнала присутствует постойнный линейный набег фазы, следовательно из зашумлённой фазы можно найти линию наклона методом наименьших квадратов. Или, как в случае ФМ/ЧМ фаза переносит полезный сигнал, полоса которого как правило меньше полосы входного x/y сигнала. Тогда, поставив дополнительный ФНЧ после вычисления фазы, можно уменьшить влияние шума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это хороший юмор, ага.

в качестве упражения для метода наименьших квадратов:

Диапазоном допустимых значений фазы -pi..pi

I(t) = -1 + wgn(t)

Q(t) = 0 + wgn(t)

т.е. фаза колышется около pi.

 

Еще, если есть какие либо априорные знания о характере фазы на выходе алгоритма, можно сделать фильтрацию и после арктангенса. Например: известно, что у исходного сигнала присутствует постойнный линейный набег фазы, следовательно из зашумлённой фазы можно найти линию наклона методом наименьших квадратов. Или, как в случае ФМ/ЧМ фаза переносит полезный сигнал, полоса которого как правило меньше полосы входного x/y сигнала. Тогда, поставив дополнительный ФНЧ после вычисления фазы, можно уменьшить влияние шума.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответы! Но, к сожалению, это не совсем то, что я ищу. Давайте на момент забудем про шумы измерений и предположим, что доступны измерению честные x и y. Как можно восстановить угол, не прибегая к алгебраической или табличной процедуре нахождения арктангенса? Мне представляется, что можно построить некоторую следящую систему, которая будет минимизировать вектор разности между поступающим вектором и его оценкой. Детали, я еще не прорабатывал и не знаю, получится ли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ключевой вопрос - а зачем отказываться от использования алгебры или таблицы?

Поставьте ПРОБЛЕМУ, тогда есть шанс услышать от кого-нибудь подходящее решение.

Например: ресурсов вот столько, как вычислить фазу?

Возможно, что Вы и сами не знаете в чем собственно ПРОБЛЕМА, поэтому и не можете найти решение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прикинул немного. Амплитуда нам не важна, она легко оценивается. Так что для простоты предположим, что амплитуда равна единице. Итак, путь x_0 и y_0 - измеряемые величины. Пусть phi_1 - оценка угла. Тогда сформируем x_1=cos(phi_1) и y_1=sin(phi_1). Повернем измеряемый вектор на pi/2 и найдем скалярное произведение повернутого вектора с нашей оценкой, получим косинус угла между ними. Так как вектор повернут на pi/2, то этот косинус совпадает с синусом угла между измерением и оценкой, правильно? А дальше как раз PLL - по измерению синуса разности угла свести эту разность к нулю.

 

Ключевой вопрос - а зачем отказываться от использования алгебры или таблицы?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Следящая система будет на выходе давать такие же квадратуры, которые будут оценками исходных квадратур. И снова встанет вопрос пересчета проекций вектора (квадратур) в полярную систему координат. Т.е. нет необходимости городить ФАПЧ. У Вас уже есть проекции вектора. Осталось только пересчитать.

Причем, если делать следящую систему цифровую (DPLL), то избавиться от джиттера или вандера практически невозможно, т.е. будет дрожание фазы сигнала-оценки. Т.е. лишнее уменьшение точности вычислений.

 

... как обычно решают эту задачу на практике.

 

Сильно зависит от частоты, например. От исходных данных.

Если у вас вектор крутится с частотой 10ГГц, то в лоб, цифрой весьма проблематично ;)

 

А ещё интересно зачем именно угол. Для задач демодуляции, например, нужен не угол, а изменение угла... а это немного другая задача. Вот там PLL применяется во весь рост.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А ещё интересно зачем именно угол. Для задач демодуляции, например, нужен не угол, а изменение угла... а это немного другая задача. Вот там PLL применяется во весь рост.

Угол то стоит на месте, то относительно медленно вращается. Задача, на сколько я понимаю, пришла из электрических машин, из бездатчикового управления. Я всех деталей не знаю, мне задачу коллеги подкинули. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прикинул немного. Амплитуда нам не важна, она легко оценивается. Так что для простоты предположим, что амплитуда равна единице. Итак, путь x_0 и y_0 - измеряемые величины. Пусть phi_1 - оценка угла. Тогда сформируем x_1=cos(phi_1) и y_1=sin(phi_1). Повернем измеряемый вектор на pi/2 и найдем скалярное произведение повернутого вектора с нашей оценкой, получим косинус угла между ними. Так как вектор повернут на pi/2, то этот косинус совпадает с синусом угла между измерением и оценкой, правильно? А дальше как раз PLL - по измерению синуса разности угла свести эту разность к нулю.

 

Собрал схему в симулинке, работает. Если кому-то интересно, то могу выложить или выслать. Идея, как я и писал, - на основе комбинаций измеренных x,y и их оценок получить синус разности углов, а дальше стандартная следящая система.

PS: Да, кстати, шумит меньше алгебраического метода. Что особо заметно, как отметил Fat Robot, при углах, близких к pi.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Угол то стоит на месте, то относительно медленно вращается. Задача, на сколько я понимаю, пришла из электрических машин, из бездатчикового управления. Я всех деталей не знаю, мне задачу коллеги подкинули. :)

 

Для бездатчикового управления в электроприводе потом попросят еще и амплитуду посчитать :rolleyes:

Есть подозрение, что это векторное управление приводом. Там считают угол из синуса и косинуса http://en.wikipedia.org/wiki/Dqo_transformation, которые получают с датчика на валу двигателя.

 

Резких бросков фазы в приводе быть не может, поэтому переходы

 

А поскольку частота поступления новых данных явно не мегагерцы, то возникает вопрос а на чем на практике вы будете считать угол? Т.е. аппаратная платформа.

И еще вопрос - а какая разрядность входных данных?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А поскольку частота поступления новых данных явно не мегагерцы, то возникает вопрос а на чем на практике вы будете считать угол? Т.е. аппаратная платформа.

И еще вопрос - а какая разрядность входных данных?

Без понятия, если честно. Я уже несколько лет гораздо меньше занимаюсь решением конкретных инженерных задач, а гораздо больше разработкой общих методов в системах управления, научными исследованиями. Коллеги спросили, как можно по измерениям проекций построить динамический наблюдатель угла вектора, без явного вычисления арктангенса. Далее они, зная специфику своей задачи, рассмотрят разнообразные варианты и выберут более подходящий для их задачи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...