CORDIC算法 arctan反正切计算原理及C语言定点实现 |
您所在的位置:网站首页 › arctan的运算 › CORDIC算法 arctan反正切计算原理及C语言定点实现 |
之前做FOC算法的时候,用到了TLV493D磁传感芯片通过两个相差90°的正弦曲线计算角度,所以需要计算arctan的值。这里就基于CORDIC(坐标旋转数字计算方法,Coordinate Rotation Digital Computer)理论,实现一种arctan的定点计算方法。 一、原理 坐标旋转与FOC中的Park变换原理相同,CORDIC也是通过旋转坐标轴来求解反正切值的。 如果去掉cosθ,这样不会影响角度旋转的结果,只是x和y都被缩小了cosθ,这样能简化计算,这称为伪旋转。得到下式: 而CORDIC的核心则是令,此时得到下式:
(1) 为什么用呢? 因为在实际代码中,可以使用右移操作来完成,能加快计算速度。 (2)这个方法能计算的角度范围? 上表中列出了5个θ值,若为无穷个呢?由可得 所以可以看出用这个方法能求的角度范围在[-99.8829°,99.8829°]。而在大多数场合,我们的计算范围是在[-180°,180°]。四个象限内的arctan都可以相互转换,且arctan是个奇函数,所以我们只需要将其它角度都转到[0°,45°]范围内计算,得到结果后变换一下即可。 迭代迭代求arctan的方法的原理就是:每次旋转上面表中计算出的角度,累加这个角度,使y趋近于0。 y趋近于0的意思,可以把旋转坐标系想象为Park变换。如图所示,坐标轴在以表中的角度旋转,假设此时要求点(1,1)相对x轴的角度,即θ = arctan(1/1) = 45°,坐标轴第一次旋转,则为表中最大的45°,此时在旋转坐标系(下图黑色)中,(1,1)点变为(,0)。当然在计算的过程中,x最后不会是,因为最开始我们为了方便计算将x和y都缩小了cosθ,但是一旦旋转到了我们期望的角度,y就是0。因此,我们只需要不断让坐标轴旋转表中的角度,得到下式: 坐标轴在逆时针旋转时,顺时针旋转时。其实就是因为,规定以逆时针旋转为正,顺时针旋转为负。假设θ=30°,初始角度为0°。第一次逆时针旋转45°,。此时45°>30°,坐标轴要往回旋转26°,,此时角度为19° |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |