exponenta event banner

cordicangle

Фазовый угол на основе CORDIC

Синтаксис

theta = cordicangle(c)
theta = cordicangle(c,niters)

Описание

theta = cordicangle(c) возвращает фазовые углы матрицы в радианах c, который содержит сложные элементы.

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

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

c

Матрица комплексных чисел

niters

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

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

theta

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

Примеры

Фазовый угол для ввода с двойным значением и для ввода с фиксированным значением.

dblRandomVals = complex(rand(5,4), rand(5,4));
theta_dbl_ref = angle(dblRandomVals);
theta_dbl_cdc = cordicangle(dblRandomVals)
fxpRandomVals = fi(dblRandomVals);
theta_fxp_cdc = cordicangle(fxpRandomVals) 

theta_dbl_cdc =

    1.0422    1.0987    1.2536    0.6122
    0.5893    0.8874    0.3580    0.2020
    0.5840    0.2113    0.8933    0.6355
    0.7212    0.2074    0.9820    0.8110
    1.3640    0.3288    1.4434    1.1291

theta_fxp_cdc =
 
    1.0422    1.0989    1.2534    0.6123
    0.5894    0.8872    0.3579    0.2019
    0.5840    0.2112    0.8931    0.6357
    0.7212    0.2075    0.9819    0.8110
    1.3640    0.3289    1.4434    1.1289

          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