||
CORDIC算法的来历与用途大家网上随处可以见到,这里写 一下自己的理解。
将P(x,y)旋转角度a得到新的坐标P’(x’,y’)。这里的坐标变换为:
x’= x cos(a) – y sin(a) = cos(a)(x-y *tan(a))
y’= y cos(a) + xsin(a) = cos(a)(y+x*tan(a))
旋转角度a为常数时,如果tan(a)=2-i ,即可用移位代替乘法便于快速高效在FPGA中实现。每次都旋转固定角度delta,
则cos(delta)=cos(arctan(2-i)).
从而得到简便计算如下:
Ki =cos(arctan(2-i))
Xi+1 =ki [xi – yi
x di x 2-i]
Yi+1 =Ki [yI + XI
x di x 2-i]
CORDIC有两种模式 1 rotation模式 每次旋转Z一个角度 直到等于要求的角度 即从极坐标变换到直角坐标
where if <img alt="$$ z_{i}
and otherwise
2 vectoring 模式 。旋转使与x轴对齐 y=0时得到的z值即所要旋转的角度,由直角坐标到极坐标的变换
[a,b]= polar2car( 1,pi/3)
a =
0.5000
b =
0.8661
[a,b]= car2polar( 0.5000, 0.8661)
a =
1.0001
b =
1.0472