演算法學習筆記之一階低通濾波演算法

2021-07-23 04:48:41 字數 1010 閱讀 7294

一階濾波,又叫一階慣性濾波,或一階低通濾波。是使用軟體程式設計實現普通硬體rc低通濾波器的功能。 

一階低通濾波的演算法公式為:

y(n)=αx(n) + (1-α)y(n-1) 

式中:α=濾波係數;x(n)=本次取樣值;y(n-1)=上次濾波輸出值;y(n)=本次濾波輸出值。 

一階低通濾波法採用本次取樣值與上次濾波輸出值進行加權,得到有效濾波值,使得輸出對輸入有反饋作用。

#define a   0.01                // 濾波係數a(0-1)

char value; //濾波後的值

char new_value; // 新的取樣值

char filter()

1. 關於靈敏度和平穩度的矛盾 

濾波係數越小,濾波結果越平穩,但是靈敏度越低;

濾波係數越大,靈敏度越高,但是濾波結果越不穩定。

一階濾波無法完美地兼顧靈敏度和平穩度。有時,我們只能尋找乙個平衡,在可接受的靈敏度範圍內取得盡可能好的平穩度。而在一些場合,我們希望擁有這樣一種接近理想狀態的濾波演算法。即:

當資料快速變化時,濾波結果能及時跟進(靈敏度優先);

當資料趨於穩定,在乙個固定的點上下振盪時,濾波結果能趨於平穩(平穩度優先)。

2. 關於小數捨棄帶來的誤差 

一階濾波演算法有乙個鮮為人知的問題:小數捨棄帶來的誤差。 比如: 本次取樣值=25,上次濾波結果=24,濾波係數=10, 根據濾波演算法:

本次濾波結果=(25*10+24*(256-10))/256=24.0390625 

但是,我們在微控制器運算中,很少採用浮點數。因此運算後的小數部分要麼捨棄,要麼進行四捨五入運算。這樣一來,本例中的結果24.0390625就變成了24。假如每次取樣值都=25,那麼濾波結果永遠=24。也就是說濾波結果和實際資料一直存在無法消除的誤差。

2020 12 17一階RC低通濾波演算法原理與實現

羅伯特祥 2020 08 09 12 46 14 分類專欄 運動控制 linux 嵌入式 訊號處理 文章標籤 低通濾波器 rc濾波器 版權 一階濾波,又叫一階慣性濾波,或一階低通濾波,軟體實現rc低通濾波器的功能。y n x n 1 y n 1 y n x n 1 y n 1 y n x n 1 y...

微控制器ADC取樣演算法 一階低通濾波

演算法實現的公式如下 其中y n 為輸出,x n 為輸入,y n 1 為上一次輸出值,其中q為濾波係數。取值範圍為0 1.看一下在微控制器中c 的實現 引數 com 為取樣的原始數值 返回值 idata 經過一階濾波後的取樣值 unsigned int lowv unsigned int com 主...

一階低通濾波器方程 一階低通濾波原理詳解

在汽車標定中,使用最多的濾波演算法即低通濾波,很多朋友可能知道怎麼標定,但是不清楚具體的原理,因此本文將介紹一階低通濾波的原理 演算法建模 和優缺點 一階濾波演算法的原理 一階濾波,又叫一階慣性濾波,或一階低通濾波。一階低通濾波的演算法公式為 y n x n 1 y n 1 式中 濾波係數 x n ...