2015-11-05 142 views
1

是否有人知道传感器融合实现只使用整数运算,而不是大多数开源实现中的所有浮点累加/除法/乘法?基于整数的传感器融合/卡尔曼滤波器

在我的处理器上执行重复的浮点计算很昂贵,我想尽可能地减少它们。我可能会失去一些精度,但我的应用程序不需要高精度的输出。

是否有任何问题将所有变量转换为整数,然后在精度中选中?任何建议都会很好,谢谢大家。

+3

尝试使用定点整数算术,例如'1000'来表示'1.000' –

+0

@WeatherVane说了些什么。简单地说 - 将数量提高一个合理的数量。或者使用专用的固定点库。 –

+0

@WeatherVane:定点是一个很好的解决方案,但是您应该使用二进制浮点表示来表现性能(即您的乘数应该是2的幂而不是10的幂) – Clifford

回答

1

使用定点是在没有FPU的设备上进行灵活的数学运算的最佳解决方案。

安东尼威廉姆斯的fixed point maths library将适合,它使用64位整数类型提供34Q28(34整数位,28分数位)格式浮点类型与广泛的数学,运算符和转换函数。它是用C++编写的,创建一个fixed类型作为一个类,具有广泛的操作符重载和标准的数学函数,因此它可以在现有代码中与floatdouble大部分互换。

我意识到这个问题被标记C,但你不必使用C++语法广泛,只需编译C代码,C++,包括fixed.hpp头,与fixed更换floatdouble和编译/链接fixed.cpp与您的项目文件。