文档

cordiccart2pol

基于cordic的笛卡尔-极坐标转换近似

语法

(θ,r) = cordiccart2pol (x, y)
[theta,r] = cordiccart2pol(x,y, niters)
[theta,r] = cordiccart2pol(x,y, niters,'ScaleOutput',b)
[theta,r] = cordiccart2pol(x,y, 'ScaleOutput',b)

描述

(θ,r)= cordiccart2pol (xy使用CORDIC算法近似,返回极坐标,角度θ和半径r,表示笛卡尔坐标,xy

(θ,r)= cordiccart2pol (xy硝酸钠执行硝酸钠算法的迭代。

(θ,r)= cordiccart2pol (xy硝酸钠,“ScaleOutput”,b)的布尔值指定迭代次数和b,是否缩放r输出由逆CORDIC增益值。

(θ,r)= cordiccart2pol (xy,“ScaleOutput”,b)尺度的r的布尔值,由CORDIC增益值的逆输出b

输入参数

x, y

x, y笛卡尔坐标。xy必须是相同的尺寸。如果它们的大小不相同,则必须至少有一个值是标量值。这两个xy必须具有相同的数据类型。

硝酸钠

硝酸钠为CORDIC算法执行的迭代次数。这个参数是可选的。当指定时,硝酸钠必须是一个正的整值标量。如果没有指定硝酸钠,或者如果指定的值太大,则算法使用最大值。对于定点运算,最大迭代次数为的字长r或者比的字长少一个θ,以较小的为准。对于浮点运算,最大值为双精度浮点运算的52,或单精度浮点运算的23。增加迭代次数可以产生更准确的结果,但也会增加计算的开销和延迟。

名称-值对的观点

可选的逗号分隔的对名称,值参数,的名字参数名和价值为对应值。的名字必须出现在单引号内('').

“ScaleOutput”

ScaleOutput是一个布尔值,指定是否按CORDIC增益因子的逆比例缩放输出。这个参数是可选的。如果你设置ScaleOutput真正的1,输出值乘以一个常数,这会招致额外的计算。如果你设置ScaleOutput0,输出是不成比例的。

默认值:真正的

输出参数

θ

θ包含极坐标角度值,其范围为[-,pi]弧度。如果xy浮点数,那么θ具有相同的数据类型xy.否则,θ与之字长相同的定点数据类型xy在[-pi, pi]范围内有一个最佳精度分数长度。

r

r包含极坐标的半径大小值。r实值和可以是标量值或具有相同的维数θ如果输入x, y是定点值,r也是不动点(并且总是带符号的,用二进制点缩放)。这两个x, y输入值必须具有相同的数据类型。如果输入是有符号的,则表示的字长r为输入字长+ 2。如果输入是无符号的,则r为输入字长+ 3。的分数长度r总是和?的分数长度相同x, y输入。

例子

将定点笛卡尔坐标转换为极坐标。

[thPos,r]=cordiccart2pol(sfi([0.75:-0.25:-1.0],16,15),sfi(0.5,16,15)) thPos = 0.5881 0.7854 1.1072 1.5708 2.0344 2.3562 2.5535 2.6780 DataTypeMode: fixpoint: binary point scaling Signed: Signed WordLength: 16 FractionLength: 13 r = 0.9014 0.7071 0.5591二进制点缩放符号Signed: Signed WordLength: 18 FractionLength: 15 [thNeg,r]=…cordiccart2pol(sfi([0.75:-0.25:-1.0],16,15),sfi(-0.5,16,15)) thNeg = -0.5881 -0.7854 -1.1072 -1.5708 -2.0344 -2.3562 -2.5535 -2.6780 DataTypeMode:固定点:二进制点尺度符号:Signed WordLength: 16 FractionLength: 13 r = 0.9014 0.7071 0.5591 0.5000 0.5591 0.9014 1.1180 DataTypeMode:固定点:二进制点缩放signness: Signed WordLength: 18 FractionLength: 15

更多关于

全部折叠

CORDIC

CORDIC是坐标旋转数字计算机的首字母缩写。基于Givens旋转的CORDIC算法是最有效的硬件算法之一,因为它只需要迭代的移位加运算(参见参考文献)。CORDIC算法消除了显式乘子的需要。使用CORDIC,可以计算各种函数,如正弦、余弦、反正弦、反余弦、反切线和矢量大小。你也可以用这个算法来处理除、平方根、双曲和对数函数。

增加CORDIC迭代的次数可以产生更准确的结果,但这样做也增加了计算的开销和延迟。

算法

全部折叠

信号流图

CORDIC引导内核

CORDIC核的准确性取决于初始值的选择XY,Z.该算法使用如下初值:

x 0 初始化为 x 输入值 y 0 初始化为 y 输入值 z 0 被初始化为 0

fimath传播规则

CORDIC函数丢弃任何局部函数fimath附加到输入。

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

  • OverflowAction- - - - - -包装

  • RoundingMethod- - - - - -地板上

输出没有附加fimath

参考文献

[1] Volder,我。《CORDIC三角计算技术》《电子计算机交易》.EC-8卷,1959年9月,330-334页。

基于FPGA的计算机CORDIC算法综述1998年ACM/SIGDA第六届现场可编程门阵列国际研讨会论文集.1998年2月22-24日,页191-200。

[3] Walther, J.S.,《初等函数的统一算法》惠普公司,帕洛阿尔托。弹簧联合计算机会议,1971,第379-386页。(电脑历史博物馆收藏)。www.computer.org/csdl/proceedings/afips/1971/5077/00/50770379.pdf

[4] Schelin, Charles W.《计算器函数近似》美国数学月刊.1983年5月,第90卷第5期,317-325页。

扩展功能

介绍了R2011b