主要内容

cordiccexp

CORDIC-based近似的复指数

语法

y = cordiccexp(θ,硝石)

描述

y= cordiccexp (θ,硝酸钠)计算因为(θ)+j*(θ)使用CORDIC算法近似。y包含近似复杂的结果。

输入参数

θ

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

硝酸钠

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

输出参数

y

y的近似复杂的结果吗cordiccexp函数。当函数的输入是浮点数,输出数据类型作为输入数据类型相同。定点输入时,输出具有相同的单词长度作为输入,和一小部分长度相等- - - - - -2

例子

下面的例子说明了迭代次数的影响的结果cordiccexp近似。

wrdLn = 8;θ= fi(π/ 2,1 wrdLn);流(' \ n \ nNITERS \ t \ tY(罪)\ t错误\ t lsb \ \ tX (COS) \ t错误\ t lsb \ n”);流(' - - - - - - \ \ t t - - - - - - - - - - - - - \ \ t - - - - - \ \ t t - - - - - - - - - - - - - \ \ t - - - - - \ n”);硝石= 1:(wrdLn - 1) cis = cordiccexp(θ,硝石);fl = cis.FractionLength;x =实际(cis);y =图像放大(cis);x_dbl =双(x);x_err = abs (x_dbl - cos(双(θ))); y_dbl = double(y); y_err = abs(y_dbl - sin(double(theta))); fprintf('%d\t\t%1.4f\t %1.4f\t %1.1f\t\t%1.4f\t %1.4f\t %1.1f\n', niters, y_dbl, y_err,(y_err * pow2(fl)), x_dbl, x_err,(x_err * pow2(fl))); end fprintf('\n');

输出表出现如下:

硝石Y(罪)错误lsb X (COS)错误lsb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 0.7031 0.2968 19.0 0.7031 0.7105 45.5 2 3 0.9375 0.0625 4.0 0.3125 0.3198 20.5 0.9844 0.0156 1.0 0.9844 0.0156 1.0 -0.0156 0.0083 0.0938 - 0.1011 6.5 - 4 5 6 1.0000 0.0000 0.0 0.0312 0.0386 2.5 1.0000 0.5 0.0000 0.0 0.0000 1.0000 0.0000 0.0 0.0156 0.0230 - 1.5 0.0073 - 0.5 7

更多关于

全部折叠

CORDIC

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

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

更多关于

算法

全部折叠

信号流图

CORDIC旋转内核

X代表真正的一部分,Y代表虚部,Z代表θ。CORDIC旋转内核的准确性依赖于初始值的选择X,Y,Z。该算法使用以下初始值:

z 0 初始化的 θ 输入参数值 x 0 被初始化为 1 一个 N y 0 被初始化为 0

fimath传播规则

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

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

  • OverflowAction- - - - - -包装

  • RoundingMethod- - - - - -地板上

没有附加的输出fimath

扩展功能

版本历史

介绍了R2010a