编写 DSP 程序时(TMS320F28335),如果直接调用系统自带的 acos 函数,有时会出现莫名其妙的错误 (如同步坐标系中的电流在稳态情况下本来是直流,但可能出现尖峰)。这是因为 acos() 函数存在 Bug 。理论上 acos(−1)=π acos(-1)=\pi ,但 DSP 的计算结果可能是 0.

由于只有这一个点有错误,所以可以很容易将该 Bug 排除。


图 1:不同角度下的正弦和余弦值

图 1 给出了不同角度下的正弦和余弦值。显然,发生 Bug 的区域位于图中蓝色区域内。如果计算正确的话,下列几个式子无法同时成立。

ar<−0.95

\frac{a}{r}

∣∣∣br∣∣∣<0.05

\left| \frac{b}{r}\right|

|θ|<0.3or|θ−2π|<0.3

\left| \theta \right|

其中, a a, bb 分别为横坐标和纵坐标,他们均可正可负; θ \theta 是对应的角度值。

上述三个式子中的前两个条件将角度限制在了图 1 中的蓝色区域内,而第三个条件又表示角度在 0 附近。因此,如果这几个条件同时满足,说明进入到了 Bug 中,这时候只需要将得到的数值强制变为 π \pi 就好了。

因此,如果横坐标为 a a 及纵坐标 bb 已知,计算对应的角度值的程序如下:

r = sqrt(a*a + b*b);
theta = acos(a/r);// acos:0-PI
if (b < 0) //PI-2*PI
{theta = 2*PI - theta;
}
if (  (a/r<0.95) && (  (b/r<0.05) && (b/r>-0.05)  ) &&(  (theta<0.3) || ((2*PI - theta)<0.3)  ))//由于 theta 已限制在0-2pi,所以第三个表达式可简化
{theta = PI;
}

经过排除 Bug 后的运行结果正常。

实际上,已经有人在 TI 的论坛上反馈过这个错误了,详情请点击链接。

TI 中 acos()函数 存在 bug相关推荐

  1. OpenCV中initUndistortRectifyMap函数存在bug原因探究

    原文首发于公众号「3D视觉工坊」:OpenCV中initUndistortRectifyMap函数存在bug原因探究. 最近在运行如下一段代码时,生成的mapx和mapy有点异常. 代码片段如下: # ...

  2. python反余弦函数_Python代码中acos()函数有什么功能呢?

    摘要: 下文讲述Python代码中acos()函数的简介说明,如下所示: acos()函数功能 用于计算出x的反余弦弧度值 acos()函数语法 math.acos(x) ---------参数说明- ...

  3. opencv mat 修改_OpenCV中initUndistortRectifyMap函数存在bug原因探究

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 3D视觉工坊的第52篇文章 最近在运行如下一段代码时,生成的mapx和mapy有点异常. 代码片段如下 ...

  4. matlab2c使用c++实现matlab函数系列教程-acos函数

    全栈工程师开发手册 (作者:栾鹏) matlab2c动态链接库下载 matlab库函数大全 matlab2c基础教程 matlab2c开发全解教程 matlab2c调用方法: 1.下载动态链接库 2. ...

  5. 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug

    0.11内核rd_load@ramdisk.c中memcpy函数好像有bug,如: #define memcpy(dst,src,n) \     __asm__("cld;rep;movs ...

  6. 关于VC++6.0中getline函数的一个bug

    关于VC++6.0中getline函数的一个bug 最近在调试程序时,发现getline函数在VC++6.0和其他编译器上运行结果不一样,比如有如下这段程序: #include <iostrea ...

  7. c++ acos函数_acos()函数以及C ++中的示例

    c++ acos函数 C ++ acos()函数 (C++ acos() function) acos() function is a library function of cmath header ...

  8. (用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正...

    原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.nativ ...

  9. php中icon,php中iconv函数的使用方法

    本篇文章中的内容介绍的是php中iconv函数的使用方法,在这里分享给大家,有需要的朋友可以参考一下 最近在做一个程序,需要用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只 ...

最新文章

  1. CV竞赛项目研究:脊柱疾病诊断(天池,GPU赛道,2020年9月)
  2. 如何启用SAP Business by design里的Correction Invoice功能
  3. 叮咚!你有一份来自明源云的圣诞邀约
  4. Thin的DateChooser代码学习(getScrollPosition)(原创,转载请声明)
  5. WEB 开发前传——js笔记
  6. 既然选择了远方,便只顾风雨兼程……
  7. lvs负载均衡的调度算法和工作模式
  8. 一些TC内置的环境环境变量(注意字母必须大写,且只能在TC内用)
  9. 驻马店远大计算机阳业学院,电力学院
  10. fusioncharts 嵌套饼图_仙桃酸洗钝化20#无缝管图
  11. 计算机组成原理——数据通路
  12. 通达OA2017版连接sqlserver2008数据库
  13. java中相对路径_java相对路径设置 | 学步园
  14. 腾讯TCA一些笔记,只敲了前几章,以官方文档和教学为主
  15. 如何保证电脑硬盘格式化后数据不能被恢复?
  16. 微信内置浏览器无法使用input图片上传和lrz.bundle.js图片压缩插件
  17. kali2020.3安装openvas(gvm11)附gvm修改amdin密码以及gvm创建账号
  18. 次日即流失?直播App如何运营超级用户?
  19. 汇编语言王爽第三版答案
  20. 基本的计算机结构知识----基础向

热门文章

  1. 【AMD】FSR技术的源码编译过程
  2. 不用再找了,支付宝自动收取能量、自动偷能量、超级简单的系统教程在这里,华为荣耀V20亲测可用
  3. 解决web网页加载不出来(django)的问题
  4. UWB高精度定位系统如何实现化工危险预警
  5. 我的世界服务器死亡延迟,2020年我的世界服务器怎么开死亡不掉落
  6. 分享一个程序猿的真实的爱情故事
  7. 宏观经济学-案例大题
  8. 印度是如何做软件开发的
  9. wps将工作表调整为一页的操作
  10. pdf做成翻页电子书_疑问解答 | Kindle翻页为什么闪屏?