主要内容

cordicrotate

旋转输入使用CORDIC-based近似

语法

v = cordicrotate(θ,u)
v = cordicrotate(θ,u,硝石)
v = cordicrotate(θ,u,名称、值)
v = cordicrotate(θ,u,硝石、名称、值)

描述

v= cordicrotate (θ,u)旋转的输入u通过θ使用CORDIC算法近似。函数返回的结果u。*e^ (j*θ)。

v= cordicrotate (θ,u,硝酸钠)执行硝酸钠迭代算法的。

v= cordicrotate (θ,u,名称,值)根据布尔值输出,b

v= cordicrotate (θ,u,硝酸钠,名称,值)指定的迭代次数和名称,值对是否按比例输出。

输入参数

θ

θ可以签名或无符号标量、向量矩阵,还是N维数组包含角值的弧度。所有的值θ必须在[2π2π)。

u

u可以签名或无符号标量值或有相同的尺寸吗θu可以真实的或复杂的价值。

硝酸钠

硝酸钠CORDIC算法的迭代次数执行。这个参数是可选的。当指定时,硝酸钠必须是一个积极,整数值标量。如果你不指定硝酸钠,或者如果您指定的值太大,该算法使用了一个最大值。对于定点运算,迭代的最大数量是这个词的长度u或一个不到的单词长度θ,哪个更小。浮点运算,最大值是52双或单23。增加迭代的数量可以产生更精确的结果,但也增加了计算的费用,并增加了延迟。

ScaleOutput

ScaleOutput是一个布尔值,用于指定是否成比例的输出逆CORDIC增益系数。这个参数是可选的。如果你设置ScaleOutput真正的1,输出值是乘以一个常数,它会带来额外的计算。如果你设置ScaleOutput0,输出不了。

默认值:真正的

输出参数

v

v包含旋转CORDIC算法的近似结果。当输入u是浮点数,输出v具有相同的数据类型作为输入。

当输入u是一个签署整数或定点数据类型、输出v是一个签署fi对象。这fi对象有一个单词长度比两位u。它的部分的长度是一样的分数u

当输入你一个无符号整数或定点,输出v是一个签署fi对象。这fi对象有一个单词长度的三位比u。它的部分的长度是一样的分数u

例子

运行下面的代码,并评估的准确性CORDIC-based复杂的旋转。

wrdLn = 16;θ= fi(-π/ 3,1 wrdLn);u = fi (0.25 - 7.1, 1, wrdLn);uTeTh = (u)的两倍。* exp(1 *双(θ));流(' \ n \ nNITERS \ tReal \ t错误\ t lsb \ \ tImag \恐怖\ tLSBs \ n”);流(' - - - - - - \ t t - - - - - - - - - - - - - \ \ t - - - - - \ \ t t - - - - - - - - - - - - - \ \ t - - - - - \ n”);硝石= 1:(wrdLn - 1) v_fi = cordicrotate(θ,u,硝石);v_dbl =双(v_fi);x_err = abs(真正的(v_dbl)——(uTeTh));y_err = abs(图像放大(v_dbl)——图像放大(uTeTh)); fprintf('%d\t%1.4f\t %1.4f\t %1.1f\t\t%1.4f\t %1.4f\t %1.1f\n',... niters, real(v_dbl),x_err,(x_err * pow2(v_fi.FractionLength)), ... imag(v_dbl),y_err, (y_err * pow2(v_fi.FractionLength))); end fprintf('\n');

输出表出现如下:

硝石真正的错误lsb图像放大误差lsb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 -4.8438 1.1800 4833.5 -5.1973 1.4306 5859.8 2 3 -6.6567 0.6329 2592.5 -2.4824 1.2842 5260.2 -5.8560 0.1678 687.5 -4.0227 0.2560 1048.8 4 5 -6.3098 0.2860 1171.5 -3.2649 0.5018 2055.2 -6.0935 0.0697 -5.9766 0.0472 193.5 -3.8413 0.0746 285.5 -3.6528 0.1138 466.2 6 7 8 -6.0359 0.0121 49.5 -3.7476 0.0191 78.2 -6.0061 305.8 0.0177 72.5 -3.7947 0.0280 114.8 9 10 -6.0210 0.0028 11.5 -3.7710 0.0043 17.8 -6.0286 0.0048 19.5 -3.7590 0.0076 31.2 11 12 -6.0247 0.0009 3.5 -3.7651 0.0015 6.2 -6.0227 0.0011 4.5 -3.7683 0.0017 6.8 13 14 -6.0237 0.0001 0.5 -3.7666 0.0001 0.2 -6.0242 0.0004 1.5 -3.7656 0.0010 4.2 15 -6.0239 0.0001 0.5 -3.7661 0.0005 - 2.2

更多关于

全部折叠

CORDIC

CORDIC坐标旋转数字计算机的缩写。的吉文斯rotation-based CORDIC算法是一种最hardware-efficient算法可用,因为它只需要迭代shift-add操作(参见参考资料)。CORDIC算法不需要显式的乘数。使用CORDIC,可以计算各种功能如正弦、余弦,反正弦,余弦,反正切,向量大小。您还可以使用这个算法的分裂,平方根,双曲线和对数函数。

增加CORDIC的迭代的数量可以产生更精确的结果,但这样做会增加计算的费用和增加了延迟。

更多关于

算法

全部折叠

信号流图

CORDIC旋转内核

X代表真正的一部分,Y代表虚部,Z代表θ。这个算法的初始值X,Y,Z的输入,uθ

fimath传播规则

CORDIC函数丢弃任何地方fimath连接到输入。

CORDIC函数使用他们自己的内部fimath当执行计算:

  • OverflowAction- - - - - -包装

  • RoundingMethod- - - - - -地板上

没有附加的输出fimath

扩展功能

版本历史

介绍了R2011a

另请参阅

|