首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >降低python中的浮点精度以提高性能。

问降低python中的浮点精度以提高性能。
EN

Stack Overflow用户
提问于 2014-07-09 08:46:04
回答 2查看 2.2K关注 0票数 2

我和蟒蛇一起工作在树莓皮上。我使用互补滤波器从陀螺仪中获得更好的值,但它消耗了太多的树莓能量--大约70%。我想我可以通过降低浮点精度来提高性能。现在,结果大约有12位小数点,这比我所需要的要多得多。有办法设定最大精度吗?把这个数字加起来并不能满足我的需要,因为这只是另一种计算。谢谢!

编辑:,我试过使用十进制模块,精确设置为6,比float慢近6倍!除了十进制之外,还有其他方法来处理定点数字(它看起来是为了更高的精度而创建的,而不是为了性能)。

EN

回答 2

Stack Overflow用户

发布于 2014-07-09 09:26:04

您可以强制使用numpy进行单精度浮点计算。

然而,如果使用单精度浮点比双精度更快,我会感到非常惊讶: raspberry pi有硬件浮点支持,所以我希望所有的计算都以完全80位的精度完成,然后舍入32位或64位的结果以节省内存。唯一可能的增益是在保存值时使用的内存带宽稍微少一点。

票数 3
EN

Stack Overflow用户

发布于 2014-07-09 09:44:04

这可能是因为你的棍子的一端不对。

陀螺仪形成的数据流相当缓慢,因此您应该有足够的时间使用任何合理的过滤器对其进行过滤。即使是卡尔曼滤波器也应该是可用的(尽管可能没有必要)。你多久采样一次陀螺仪和加速度计的数据?合理的最大值是几百赫兹,而不是更多。

加速度计和陀螺仪测量用的互补滤波器重量轻,其本身的处理能力很低。它可以在一个缓慢的8位处理器上实现,所以Raspberry太快了。

根据您对互补过滤器所做的操作,过滤器本身需要一些浮点操作。如果你计算弧切线或等效函数,那将需要数百个触发器。如果以1 kHz的速度执行,您可能会消耗几百kFLOPS (浮点OPerations每秒)。一个RPi的FP吞吐量约为100个MLFOPS,因此有很大的裕度。

因此,降低FP的精度不会有太大帮助,问题就在其他地方。也许,如果您显示更多的您的代码,它可以确定问题在哪里!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24649084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档