主要内容

cordicpol2cart

CORDIC-based polar-to-Cartesian近似转换

语法

(x, y) = cordicpol2cart(θ,r)
(x, y) = cordicpol2cart(θ,r,硝石)
(x, y) = cordicpol2cart(θ,r,名称,值)
(x, y) = cordicpol2cart(θ,r,硝石、名称、值)

描述

(x, y)= cordicpol2cart (θ,r)返回的笛卡尔xy坐标r* e ^ (j *θ)使用CORDIC算法近似。

(x, y)= cordicpol2cart (θ,r,硝酸钠)执行硝酸钠迭代算法的。

(x, y)= cordicpol2cart (θ,r,名称,值)天平输出取决于的布尔值b

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

输入参数

θ

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

r

r包含输入大小值和一个标量或有相同的尺寸θr必须真正的价值。

硝酸钠

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

ScaleOutput

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

默认值:真正的

输出参数

(x, y)

(x, y)包含近似笛卡尔坐标。当输入r是浮点数,输出(x, y)具有相同的数据类型作为输入。

当输入r是一个签署整数或定点数据类型、输出(x, y)签订fi对象。这些fi对象有单词长度比两位r。他们的分数的长度是一样的分数的长度r

当输入r是一个无符号整数或定点,输出(x, y)签订fi对象。这些fi对象有单词长度是三位比r。他们的分数的长度是一样的分数的长度r

例子

运行下面的代码,并评估的准确性CORDIC-based Polar-to-Cartesian转换。

wrdLn = 16;θ= fi(π/ 3,1 wrdLn);u = fi (2.0、1、wrdLn);流(' \ n \ nNITERS \ tX \ t \ t错误\ t lsb \ t \ tY \ \ t错误\ t lsb \ n”);流(' - - - - - - \ t t - - - - - - - - - - - - - \ \ t - - - - - \ \ t t - - - - - - - - - - - - - \ \ t - - - - - \ n”);硝石= 1:(wrdLn - 1) [x_ref y_ref] = pol2cart(双(θ),双(u));[x_fi, y_fi] = cordicpol2cart(θ,u,硝石);x_dbl =双(x_fi);y_dbl =双(y_fi);x_err = abs (x_dbl - x_ref); y_err = abs(y_dbl - y_ref); fprintf('%d\t%1.4f\t %1.4f\t %1.1f\t\t%1.4f\t %1.4f\t %1.1f\n',... niters,x_dbl,x_err,(x_err * pow2(x_fi.FractionLength)),... y_dbl,y_err,(y_err * pow2(y_fi.FractionLength))); end fprintf('\n'); NITERS X ERROR LSBs Y ERROR LSBs ------ ------- ------ ---- ------- ------ ---- 1 1.4142 0.4142 3392.8 1.4142 0.3178 2603.8 2 0.6324 0.3676 3011.2 1.8973 0.1653 1354.2 3 1.0737 0.0737 603.8 1.6873 0.0448 366.8 4 0.8561 0.1440 1179.2 1.8074 0.0753 617.2 5 0.9672 0.0329 269.2 1.7505 0.0185 151.2 6 1.0214 0.0213 174.8 1.7195 0.0126 102.8 7 0.9944 0.0056 46.2 1.7351 0.0031 25.2 8 1.0079 0.0079 64.8 1.7274 0.0046 37.8 9 1.0011 0.0011 8.8 1.7313 0.0007 5.8 10 0.9978 0.0022 18.2 1.7333 0.0012 10.2 11 0.9994 0.0006 5.2 1.7323 0.0003 2.2 12 1.0002 0.0002 1.8 1.7318 0.0002 1.8 13 0.9999 0.0002 1.2 1.7321 0.0000 0.2 14 0.9996 0.0004 3.2 1.7321 0.0000 0.2 15 0.9998 0.0003 2.2 1.7321 0.0000 0.2

更多关于

全部折叠

CORDIC

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

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

更多关于

算法

全部折叠

信号流图

CORDIC旋转内核

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

fimath传播规则

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

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

  • OverflowAction- - - - - -包装

  • RoundingMethod- - - - - -地板上

没有附加的输出fimath

扩展功能

版本历史

介绍了R2011a