基于整数的传感器融合/卡尔曼滤波器
问题描述:
是否有人知道传感器融合实现只使用整数运算,而不是大多数开源实现中的所有浮点累加/除法/乘法?基于整数的传感器融合/卡尔曼滤波器
在我的处理器上执行重复的浮点计算很昂贵,我想尽可能地减少它们。我可能会失去一些精度,但我的应用程序不需要高精度的输出。
是否有任何问题将所有变量转换为整数,然后在精度中选中?任何建议都会很好,谢谢大家。
答
使用定点是在没有FPU的设备上进行灵活的数学运算的最佳解决方案。
安东尼威廉姆斯的fixed point maths library将适合,它使用64位整数类型提供34Q28(34整数位,28分数位)格式浮点类型与广泛的数学,运算符和转换函数。它是用C++编写的,创建一个fixed
类型作为一个类,具有广泛的操作符重载和标准的数学函数,因此它可以在现有代码中与float
或double
大部分互换。
我意识到这个问题被标记C,但你不必使用C++语法广泛,只需编译C代码,C++,包括fixed.hpp头,与fixed
更换float
或double
和编译/链接fixed.cpp与您的项目文件。
尝试使用定点整数算术,例如'1000'来表示'1.000' –
@WeatherVane说了些什么。简单地说 - 将数量提高一个合理的数量。或者使用专用的固定点库。 –
@WeatherVane:定点是一个很好的解决方案,但是您应该使用二进制浮点表示来表现性能(即您的乘数应该是2的幂而不是10的幂) – Clifford