公式(2-5)

我们定义这种旋转为伪旋转,公式(2-5)叫做伪旋转方程式。因为去掉了cos(θ),这样使得每次循环又减少了乘法运算的次数,但带来的影响是,每次旋转后得到的新坐标点到原点的距离都改变了了,因为cos(θ)<1,所以实际值是增大了,而增大后的值是原来的1/cos(θ)倍。但我们求的是角度θ值得大小,所以对于ρ值的变化,我们暂且搁置。这样一来,每次循环的乘法运算一下就从4次减少到了2次了。

我们知道,CORDIC算法的思想是通过迭代的方法,不断地旋转某一特定的角度,而这角度就是使得其正切值为上一值得一半,从而使得累计的旋转角度为最开始设定的值。每次旋转的角度值为:θ=arctan(1/(2^n)),即,那我们是如何确定这个特定的值呢?

一开始我们采用角度减半的方式进行迭代,因为第一次循环时,tan(45°)=1,所以第一次循环是不需要乘法运算的。那么第二次迭代的角度为22。5°,我们要tan(22。5°)=0。41421356,但这是个没有规律的小数。所以我们要用二分查找法得出它的值,尽管二分查找法的效率很高,但也同样不可避免的使用到了乘法器,这样一来,不但增加了资源的占用率,还大大降低了运算的速度。这是我们所不想看到的结果,像乘法器这样占用资源的我们能少用便少用。所以我们还得对每一次迭代的角度进行修改,我们需要选择一个在22。5°和45°之间的角度值,尽管这样会降低查找的效率,却能有效的减少使用乘法器的次数,这样就能提高运算的速率了。如果按照原来的旋转角度来算,也就是二次旋转采用26。565051177078°而不是22。5°,tan(26。565051177078°)=1/2,那么需要进行运算是乘以1/2,因为我们采用的计算方法是定点数运算,乘以对应的操作就是乘数右移一位。而移位运算在硬件中实现是很非常方便的,运算足够快,这样第二次迭代中的乘法运算也被消除了。使用同样的方法,在第三次循环中不用11。25°,而采用14。0362434679265°,tan(14。0362434679265°)=1/4。也就是乘数右移两位就可以了。剩下的都以此方法类推,如下表所示,表中记录的是乘法器每一次右移时对应的tan(θ)值对,及他们对应角度θ的值,还有在每次伪旋转时去掉的伸缩因子cos(θ)的值,我们可以得到表2-1。

表2-1 迭代次数所对应的旋转角

i

 0 45。0000 1 0。707106781

1 26。5651 0。5 0。894427191

2 14。0362 0。25 0。970142684

3 7。1250 0。125 0。992277877

4 3。5763 0。0625 0。998052578

5 1。7899 0。03125 0。999512076

6 0。8952 0。015625 0。999877952

7 0。4476 0。0078125 0。999969484

8

上一篇:AT89C51单片机模拟GPS定位信息显示系统设计
下一篇:纳米孔道中离子电流整流现象仿真研究

基于TCP/IP技术的转向架振动测试系统设计

基于PM2.5浓度的健康出行路径规划及实现

基于涡旋电磁波的新型雷达成像技术研究

基于相关滤波器的长期跟踪算法研究

基于ZigBee协议轨道交通环...

基于QT的图像处理系统设计

基于LBG算法的语音信号的矢量量化方法设计

《水浒传》中血腥暴力研...

MNL模型历史城区居民活动...

提高小學语文課堂朗读教...

从企业eHR建设谈管理信息...

小型通用机器人控制系统设计任务书

大规模MIMO系统的发展研究现状

遥感土地用变化监测国内外研究现状

PCI+PID算法直流力矩电机速...

高效课堂教师问卷调查表

浅析施工企业保理融资成...