Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Трбуется быстрый алгоритм определения разности фаз
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
AndreyVCh
Дамы и господа, помогите советом.
Требуется быстрый целочисленный алгоритм нахождения разности фаз двух комплексных чисел (или фазы комплексного числа). I и Q целые, 16 разрядные. Для результата достаточно 8 битной точности.
Выполняться будет на DSP 6400 серии от TI.
shf_05
Цитата(AndreyVCh @ Jul 17 2008, 10:55) *
Дамы и господа, помогите советом.
Требуется быстрый целочисленный алгоритм нахождения разности фаз двух комплексных чисел (или фазы комплексного числа). I и Q целые, 16 разрядные. Для результата достаточно 8 битной точности.
Выполняться будет на DSP 6400 серии от TI.


найдите уголы чисел 1 и 2 и вычтите. понадобится вычислить пару-тройку тригонометрических функций, можно использовать разложение в ряд для вычисления триг. функций (по любому есть готовые подпрограммы или библиотеки на С !!!), вычитайте углы и радуйтесь жизни.
например
phi1= arctan(i1/q1),
phi1= arctan(i2/q2),
phi= phi1-phi2
можно и через sin, cos- см. триг. формулы.
и радуйтесь жизни.

если это Вам не подходит- попробуйте составить таблицу для разных значений IQ, где лежат готовые углы, считывайте их из памяти, вычитайте и радуйтесь жизни.
AndreyVCh
Таблицу то я составил, да вот размером она 64K. Может найдется хитрый способ уменьшить ее размер?
alexr22b
Цитата(AndreyVCh @ Jul 17 2008, 19:47) *
Таблицу то я составил, да вот размером она 64K. Может найдется хитрый способ уменьшить ее размер?


Ключевое слово: CORDIC
Google it.
shf_05
Цитата(AndreyVCh @ Jul 17 2008, 22:47) *
Таблицу то я составил, да вот размером она 64K. Может найдется хитрый способ уменьшить ее размер?

))))
а Вы как хотели!
можно
1. уменьшить ее размер за счет исключения "лишних" углов- Вы писали, что на выходе нужна 8битная точность- пойдите наоборот- составьте таблицу 8-ми битных чисел углов и рассчитайте соответствующие значения !&Q, после этого "причешите" ее, тк операция arctan нелинейна, то где-то углы будут "идти" с большим шагом, где-то с меньшим найдите минимальный шаг (ВАМ ПОВЕЗЛО, ЕСЛИ ОН БОЛЬШЕ 1 БИТА!!!). Составьте новую таблицу с таким шагом.
2, интерполируйте таблицу по х точкам, лежащим рядом с Вашим углом, например по 2-м- линейно, 3 и более- полиномом х-го порядка
3 считайте функцию arctan, не знаю сколько она по тактам, но на таком камне это будет все равно быстро
AndreyVCh
Всем спасибо. Остановился на табличном варианте.
Andron_
а функция atan2 из библиотеки TI *забыл как она зовется то* не поможет?
на 5509а она выполняется примерно за 60...70 тактов на число.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.