CORDIC algorithm

zhuanzi:http://www.cnblogs.com/touchblue/p/3535968.html html

如上图 算法

如图中,直角坐标系中点(X0,Y0)逆时钟旋转角度θ,变换成坐标(X1,Y1),那么用X0,Y0,以及θ的三角函数,若是表示X1,Y1呢? 函数

请想象,若是坐标也旋转角度θ,那么X1,Y1的坐标依然是(X0,Y0)。接着往下看: 3d

看完以上这副图,就该明白这个等式了: htm

x1= x0cos θ − y0sin θ
y1= x0sin θ + y0cos θ blog

再把这个式子化成正切函数。 get

Cordic 算法的思想是经过迭代的方法,不断的旋转特定的角度,使得累计旋转的角度的和无限接近某一设定的角度, it

每次旋转的角度的θ = arctan( 1/(2^n) ); 方法

具体迭代以下表:Z0 =30°,Y0=0,X0 = 0.6073 im

输入30°,通过9次迭代后, Z0 = 0,Y0=0.5006, X0 = 0.8657

x '(i +1)= ( x 'i− y 'i(σi)2−i)
y '(i +1)= ( x 'i(σi)2−i+ y 'i)

(当 i = 0)
x '1= 0.607 − 0 ⋅ (+1 ) ⋅ 1 = 0.607

y '1= 0.607 ⋅ (+1 ) ⋅ 1 + 0 = 0.607

经过Cordic算法后,获得y9=0.5006 (=sin(30°))

                                 x9=0.8657 (=cos(30°))

因此也能够用cordic算法求出正切值的。

或者求反正切值:

计算公式:

相关文章
相关标签/搜索