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)点变为(因此,我们只需要不断让坐标轴旋转表中的角度,得到下式: 假设θ=30°,初始角度为0°。第一次逆时针旋转45°, |
CopyRight 2018-2019 实验室设备网 版权所有 |