2010-11-24 106 views
6

我正在做陀螺儀和加速度計數據結合的一些數學,我想低通濾波結果數據。那麼有人可能會發布一些低通濾波器的通用代碼?如何實施低通濾波器?

+0

你想要的代碼生成係數或只是進行過濾?它應該是IIR還是FIR濾波器? – Guy 2010-11-24 22:20:10

回答

6

一個一階IIR低通濾波器可以是這樣的形式:

output_value = rate * input_value + (1.0 - rate) * previous_output_value; 

這是相當多裏面有什麼Apple的AccelerometerGraph示例。您可以根據要滾降或開始衰減的頻率(非常非常粗略地每秒鐘抖動)來選擇速率參數,以獲得更平滑的結果輸出以及輸入數據的採樣率。

2

低通濾波器簡單地平滑結果以消除高頻。最簡單的低通濾波器是一個箱式濾波器,它通過將n個採樣平均到一起來完成。

對於平均2個樣品一起,這是因爲這樣做簡單:

sample[n] (sample[n] + sample[n + 1])/2; 
2

如果Apple的AccelerometerGraph例子太複雜了,您不能理解,我爲我的班級創建了一個更簡單的加速度計示例,您可以下載here。這爲原始加速度計值實現了一個簡單的低通和高通濾波器,然後將結果記錄到屏幕上。

由於hotpaw2和戈茲貝達描述,這裏採用的濾波計算的非常簡單的加權移動平均:

UIAccelerationValue lowPassFilteredXAcceleration = (currentXAcceleration * kLowPassFilteringFactor) + (previousLowPassFilteredXAcceleration * (1.0 - kLowPassFilteringFactor));