2015-11-05 140 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與您的項目文件。