搜索
bottom↓
回复: 31

如何减少正弦、余弦的计算时间

[复制链接]

出0入0汤圆

发表于 2015-5-9 15:02:52 | 显示全部楼层 |阅读模式
dsp程序中需要大量做正弦、余弦、反正切计算,共运行24次计算,现采用直接计算的方法,没有用到IQmath,发现计算时间过长,不知道是否有好的解决方法。另外运行正弦、余弦的时间有多少,有没文档说明的!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入17汤圆

发表于 2015-5-9 15:07:52 | 显示全部楼层
查表、降低精度迭代计算
计算速度实测吧,不同处理器不同

出0入0汤圆

 楼主| 发表于 2015-5-9 15:41:34 | 显示全部楼层
DOER 发表于 2015-5-9 15:07
查表、降低精度迭代计算
计算速度实测吧,不同处理器不同

查表法有个问题,这个表的格式是float还是int类型比较合适,int类型表应该少占空间,但是做正弦、余弦计算结果希望是float,这样数据类型的转换是否会降低精度;若采用float类型表应该会占空间较大,就是怕放不下这么多数据(正弦、余弦各自1000个点)

出0入17汤圆

发表于 2015-5-9 15:50:26 | 显示全部楼层
xyx2012xyx 发表于 2015-5-9 15:41
查表法有个问题,这个表的格式是float还是int类型比较合适,int类型表应该少占空间,但是做正弦、余弦计 ...

正弦表与余弦表是一个表,而且取前90°即可

出0入0汤圆

发表于 2015-5-9 16:42:48 | 显示全部楼层
CORDIC,字数

出0入0汤圆

 楼主| 发表于 2015-5-9 17:32:37 来自手机 | 显示全部楼层
charlesg 发表于 2015-5-9 16:42
CORDIC,字数

没接触过这个,有文档说明能共享下不

出0入0汤圆

发表于 2015-5-9 18:05:58 | 显示全部楼层
xyx2012xyx 发表于 2015-5-9 17:32
没接触过这个,有文档说明能共享下不

不好意思,我这边没有现成的文档,谷歌一大堆,可以自己搜一下

出0入0汤圆

发表于 2015-5-9 18:26:30 | 显示全部楼层
没必要每个都计算吧!正弦、余弦、反正切计算可以相互转换,只要解决一个就好了

出0入0汤圆

发表于 2015-5-9 18:50:58 | 显示全部楼层
你的dsp是定点的还是浮点的?这一点不说,很难判断怎么搞。总之一句话,优化代码要靠cpu特性(定点、浮点特性)和算法来实现。

出50入0汤圆

发表于 2015-5-9 22:48:39 | 显示全部楼层
查表法即可,统一放到到32BIT的精度应该足够使用了吧。

出0入0汤圆

 楼主| 发表于 2015-5-9 23:48:49 来自手机 | 显示全部楼层
aureole 发表于 2015-5-9 18:50
你的dsp是定点的还是浮点的?这一点不说,很难判断怎么搞。总之一句话,优化代码要靠cpu特性(定点、浮点特 ...

用的是dsp28335,在10k周期中处理这么多正弦余弦变换

出0入22汤圆

发表于 2015-5-9 23:53:33 来自手机 | 显示全部楼层
其实只需要一个象限的表就够了

出0入0汤圆

 楼主| 发表于 2015-5-9 23:53:33 来自手机 | 显示全部楼层
cddyy 发表于 2015-5-9 22:48
查表法即可,统一放到到32BIT的精度应该足够使用了吧。

原先的设想是将360度生成个1000点的表,数据类型是float,不知这样可以不?

出0入0汤圆

发表于 2015-5-10 10:24:15 来自手机 | 显示全部楼层
xyx2012xyx 发表于 2015-5-9 23:53
原先的设想是将360度生成个1000点的表,数据类型是float,不知这样可以不?

只需要取90就行了

出0入0汤圆

发表于 2015-5-10 10:55:55 | 显示全部楼层
四分之一的数据,可以加加减减,正正负负,以前画圆时就时这么干的

出0入0汤圆

发表于 2015-5-10 11:17:12 | 显示全部楼层
精度要求很高?  不然没必要用float,用定点就行,  反正最后定时器里面还是整型

出0入0汤圆

发表于 2015-5-10 12:00:33 | 显示全部楼层
28335的boot ROM数学表描述:
正余弦函数表:单精度浮点型,1282字,Q格式为Q30,内容为5/4周期正弦波的32位浮点采样,这个函数有助于产生准确的正弦波和进行32位FFT分析。
还有其他。

出0入0汤圆

发表于 2015-5-10 12:33:51 | 显示全部楼层
对精度要求不是特别特别严格的时候,可以使用多次泰特级数展开来模拟SIN,精度可以接受,速度比较快。
还有楼上@charlesg网友说的Cordic 算法,这个算法可以看这个博客的介绍:

三角函数计算,Cordic 算法入门

出0入17汤圆

发表于 2015-5-10 19:23:45 | 显示全部楼层
nengcai0313 发表于 2015-5-10 12:33
对精度要求不是特别特别严格的时候,可以使用多次泰特级数展开来模拟SIN,精度可以接受,速度比较快。
还有 ...

学习了,原来如此!

出0入0汤圆

发表于 2015-5-10 20:13:22 | 显示全部楼层
查表,最快可以30~40个时钟周期完成

出0入0汤圆

发表于 2015-5-10 20:14:10 | 显示全部楼层
也就是在168M STM32F4上面,差不多0.3us求一次sin,cos,0.4us求一次atan2

出0入0汤圆

发表于 2015-5-25 22:58:25 | 显示全部楼层
nengcai0313 发表于 2015-5-10 12:33
对精度要求不是特别特别严格的时候,可以使用多次泰特级数展开来模拟SIN,精度可以接受,速度比较快。
还有 ...

谢谢推荐的博客链接,已收藏

出0入0汤圆

发表于 2015-5-26 03:07:42 来自手机 | 显示全部楼层
学习了,一直缺少这方面的知识

出0入0汤圆

发表于 2015-5-26 08:08:11 | 显示全部楼层
好资料。博客链接已经收藏。

出0入0汤圆

发表于 2015-5-26 11:21:13 | 显示全部楼层
Cordic博客链接已经收藏。

出0入0汤圆

发表于 2015-5-26 14:06:47 | 显示全部楼层
CORDIC算法只适合定点运算啊。

出0入0汤圆

发表于 2015-5-26 17:52:05 | 显示全部楼层
查表,无敌模式

出0入0汤圆

发表于 2015-5-27 22:34:23 | 显示全部楼层
查表+差值

出0入0汤圆

 楼主| 发表于 2015-6-3 21:05:08 | 显示全部楼层
sunnyqd 发表于 2015-5-10 20:14
也就是在168M STM32F4上面,差不多0.3us求一次sin,cos,0.4us求一次atan2

28335实测4次正弦或余弦计算消耗5-6us,2次atan2居然消耗18-20us,难道是哪里设置有问题,求教!

出0入0汤圆

发表于 2015-6-3 21:23:46 | 显示全部楼层
xyx2012xyx 发表于 2015-6-3 21:05
28335实测4次正弦或余弦计算消耗5-6us,2次atan2居然消耗18-20us,难道是哪里设置有问题,求教! ...


28335,150MHz的速度,查表法应该只需40个指令周期左右就可以完成了一次查表计算了啊

出0入0汤圆

 楼主| 发表于 2015-6-3 21:27:38 | 显示全部楼层
sunnyqd 发表于 2015-6-3 21:23
28335,150MHz的速度,查表法应该只需40个指令周期左右就可以完成了一次查表计算了啊 ...

我这个时间是做直接计算示波器实测时间,没有用查表方式,但感觉还是不太对,消耗这么多时间,特别是求解atan2的时候?

出0入0汤圆

发表于 2015-6-4 09:52:09 | 显示全部楼层
xyx2012xyx 发表于 2015-6-3 21:27
我这个时间是做直接计算示波器实测时间,没有用查表方式,但感觉还是不太对,消耗这么多时间,特别是求解 ...

直接计算肯定会耗时间的,就算是直接计算,最好也是用优化的泰勒展开,atan2用泰勒展开计算也应该在1us以内才对。除非你可能是直接用c库函数计算的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 04:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表