Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: atan
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
TigerSHARC
Ищу реализацию функции арктангенса для целых чисел(int16). В идеале хочется получить таблицу констант и одну функцию.
eugen_pcad_ru
Таблица перекодировок?
TigerSHARC
ну предпологается что арктангенс ищется табличным методом.
fontp
QUOTE (TigerSHARC @ Nov 7 2012, 14:58) *
ну предпологается что арктангенс ищется табличным методом.


CORDIC что ли? Я мог бы дать вам такой atan2 но без комментариев
TigerSHARC
Цитата(fontp @ Nov 7 2012, 16:23) *
CORDIC что ли? Я мог бы дать вам такой atan2 но без комментариев

был бы рад!Пусть и без коментариев, мне нужна функция которая просто будет возвращать результат. если не сложно залейте на zalil.ru

Но, по-моему, CORDIC слишком требователен к ресурсам. Табличный метод проще, но требует много памяти для хранения таблицы.
Табличный метод наряду с CORDIC описан тут: https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%...%81%D0%BA%D0%B0
fontp
QUOTE (TigerSHARC @ Nov 7 2012, 15:59) *
был бы рад!Пусть и без коментариев, мне нужна функция которая просто будет возвращать результат. если не сложно залейте на zalil.ru

Но, по-моему, CORDIC слишком требователен к ресурсам. Табличный метод проще, но требует много памяти для хранения таблицы.
Табличный метод наряду с CORDIC описан тут: https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%...%81%D0%BA%D0%B0



http://zalil.ru/33936107

В случае таблицы Вы функцию 2-х переменных atan2 на круге приводите сначала к диапазону [0, pi/4] и одной переменной (x/y или y/х в зависимости от того кто из них меньше по модулю). Это перебор квадрантов и их половин посредством сравнений.
Потом можете использовать или большую таблицу или поменьше с линейной интерполяцией. Но в любом случае неизбежно деление.
CORDIC же работает без деления, а сам осуществляет поразрядное уравновешивание, как это делается в делении, по другому, но с такой же сложностью (если конечно у вас нет сопроцессора, делающего деление за один такт). Так что CORDIC обычно не хуже по быстродействию, но не содержит громоздких таблиц.
TigerSHARC
Спасибо за код!
Увидел atan2 и негодовал! Она ведь для плавучки))
потом увидел cordic для интов и возрадовался. Спасибо!
fontp
QUOTE (TigerSHARC @ Nov 7 2012, 16:35) *
Спасибо за код!
Увидел atan2 и негодовал! Она ведь для плавучки))
потом увидел cordic для интов и возрадовался. Спасибо!



CORDIC float и CORDIC int - это следы разработки и отладки. Таблицы нужно как-то переносить или если проект на С то можно использовать atan2 при инициализации. Я плохо помню эту реализацию, потому отказываюсь сразу от коментариев, но помню что оно давно когда-то работало. А интерфейс там в тесте виден... rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.