[an error occurred while processing this directive]
Вот как-то так
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено KPAH 20 апреля 2006 г. 23:08
В ответ на: Как реализовать арктангенс на МК ? отправлено <font color=gray>ssassh</font> 20 апреля 2006 г. 18:10

основная формула: atan(x)+atan(y) = atan((x+y)/(1-x*y))
на вход подаём X. Y = максимальное из 1/n, 2/n.... k/n меньшее или равное X
z=(X-Y)/(1+X*Y), z<=1/n
в зависимости от n для вычисления atan(z) необходим полином той или иной степени. для n=32 хватает 3-й.
в итоге: atan(X) = atan(z) + atan(Y)

Типа "код" для случая когда 0<=X<=1.0 :

int pos = X*32.0f;
float arg = (X - atanarg[pos])/(1.0f + X*atanarg[pos]);
float arg2 = arg*arg;
return arg * (1.0f - arg2 * 0.3332f);

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru