exponenta event banner

cordicatan2

Четырехквадрантная обратная касательная на основе CORDIC

Синтаксис

theta = cordicatan2(y,x)
theta = cordicatan2(y,x,niters)

Описание

theta = cordicatan2(y,x) вычисляет четырехквадрантный арктангенс y и x с использованием аппроксимации алгоритма CORDIC.

theta = cordicatan2(y,x,niters) выступает niters итерации алгоритма.

Входные аргументы

y,x

y,x декартовы координаты. y и x должен быть одинакового размера. Если они не имеют одинакового размера, по крайней мере одно значение должно быть скалярным. Оба y и x должен иметь один и тот же тип данных.

niters

niters - количество итераций, выполняемых алгоритмом CORDIC. Это необязательный аргумент. Если указано, niters должен быть положительным, целочисленным скаляром. Если не указать niters или если указано слишком большое значение, алгоритм использует максимальное значение. Для операции с фиксированной точкой максимальное число итераций на единицу меньше длины слова y или x. Для операции с плавающей запятой максимальное значение равно 52 для двойной или 23 для одиночной. Увеличение числа итераций может дать более точные результаты, но также увеличивает затраты на вычисления и добавляет задержки.

Выходные аргументы

theta

theta - значение арктангенса, которое находится в диапазоне [-pi, pi] радиан. Если y и x являются числами с плавающей запятой, то theta имеет тот же тип данных, что и y и x. В противном случае theta - тип данных с фиксированной точкой с той же длиной слова, что и y и x и с наиболее точной длиной дроби для диапазона [-pi, pi].

Примеры

Расчет арктангенса CORDIC с плавающей запятой.

theta_cdat2_float = cordicatan2(0.5,-0.5)

theta_cdat2_float =
    2.3562

Расчет арктангенса CORDIC с фиксированной точкой.

theta_cdat2_fixpt = cordicatan2(fi(0.5,1,16,15),fi(-0.5,1,16,15));

theta_cdat2_fixpt = 
    2.3562

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 16
        FractionLength: 13

Подробнее

свернуть все

CORDIC

CORDIC - аббревиатура от COORDinate Rotation DIgital Computer. Алгоритм CORDIC на основе ротации Givens является одним из наиболее аппаратных алгоритмов, поскольку требует только итеративных операций добавления сдвига (см. Ссылки). Алгоритм CORDIC устраняет необходимость в явных множителях. С помощью CORDIC можно вычислить различные функции, такие как синус, косинус, синус дуги, косинус дуги, касательная дуги и величина вектора. Этот алгоритм можно также использовать для функций деления, квадратного корня, гиперболических и логарифмических функций.

Увеличение числа итераций CORDIC может дать более точные результаты, но это увеличивает затраты на вычисления и увеличивает задержку.

Подробнее

Алгоритмы

свернуть все

Схемы потока сигналов

Ядро векторизации CORDIC

Точность ядра CORDIC зависит от выбора начальных значений для X, Y и Z. Этот алгоритм использует следующие исходные значения:

x0  инициализируется к  x входному значению 0  инициализируется к  y входному значению 0  инициализируется к 0

Правила распространения fimath

Функции CORDIC отбрасывают любые локальные fimath присоединено к входу.

Функции CORDIC используют собственные внутренние fimath при выполнении расчетов:

  • OverflowActionWrap

  • RoundingMethodFloor

Выход не подключен fimath.

Расширенные возможности

.
Представлен в R2011b