arctan查表法 您所在的位置:网站首页 arctanx的特殊值表格 arctan查表法

arctan查表法

2024-07-09 13:19| 来源: 网络整理| 查看: 265

arctan()函数的查表算法

文集库

2020-05-13 14:34:56

0

目标:实现反正切函数的查表算法,精度0.5°。

分析:

f(x)=arctan(x)函数单调但非线性,越接近原点处,斜率越大。

90°比较特殊,其值为正无穷大,只要得到的正切值tana大于114.59(89.5度对应的正切值),就可以认为是90度。

假如0-89.5°用一个查找表实现,索引为正切值,值为角度值。tan89.5为115,假如用N点uint16_t型查找表,需要保证

arctan(115 / N) < 0.5°

即 115 / N < 0.0087

可选的最小值为13219,意味着至少要建立一张13K×16的表,占用26KB的Flash,对于一般的MCU来说不可接受。

如果0-45°用一个查找表实现,由于tan45°=1,根据上面的计算公式,可以得出N的最小值为114,这个N值对一般的MCU均可以接受,甚至可以增加至256点来提高精度。对于45°以上的角度,可以根据两角和的三角公式来得到,推导过程如下:

如果测量的正切值K大于1,那么根据最后的公式,可以求出比45°大的那个角度a,再加上45°就是实际的角度。而a的计算可以由256点查找表来快速得到,这样就实现了用一个小容量查找表计算90度以内的反正切值。

查找表涉及两个数值:表索引idx和表的角度值angle[idx]。

索引值idx对应0-45°的正切值,由于这些值均小于1,采用整体扩大256倍的方法,将正切值就映射到了0-256的区间,从而索引idx的范围为0-255。

角度值angle[]是uint16_t型的,而实际的范围为0-45,根据65536/45=1456,可以用Q12的表示方式来提高分辨率。

查找表如下:

static const uint16_t tb_atan[256]={

0, 229, 458, 687, 916, 1145, 1374, 1603,



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有