工程應用中,偶有ADC采樣異常或者需要采樣值更加平穩之類的需求,在硬件設計已經完成的情況下,常采用一些軟件算法來彌補不足,增強系統魯棒性。本篇主要記錄分享強大網友的智慧結晶。
1. 限幅濾波法(又稱程序判斷濾波法)
設隨機變量為X,定義一誤差幅值A,濾除|Xn-Xn-1|>A的值。
2. 中位值濾波法
連續采樣奇數次,排序取中間值。
3.算數平均濾波法
連續取 N個采樣值進行算術平均運算。
4.遞推平均濾波法(又稱滑動平均濾波法)
把連續取 N 個采樣值看成一個隊列
隊列的長度固定為 N
每次采樣到一個新數據放入隊尾,并扔掉原來隊首的一次數據(先進先出原則)
把隊列中的 N 個數據進行算術平均運算,就可獲得新的濾波結果
5.中位值平均濾波法(又稱防脈沖干擾平均濾波法)
相當于“中位值濾波法”+“算術平均濾波法”
連續采樣 N 個數據,去掉一個最大值和一個最小值
然后計算 N-2 個數據的算術平均值
6.限幅平均濾波法
相當于“限幅濾波法”+“遞推平均濾波法”
每次采樣到的新數據先進行限幅處理,
再送入隊列進行遞推平均濾波處理
7.一階滯后濾波法
取 a=0~1
本次濾波結果=(1-a) 本次采樣值+a上次濾波結果
8.加權遞推平均濾波法
是對遞推平均濾波法的改進,即不同時刻的數據加以不同的權
通常是,越接近現時刻的數據,權取得越大。
給予新采樣值的權系數越大,則靈敏度越高,但信號平滑度越低
9.消抖濾波法
設置一個濾波計數器
將每次采樣值與當前有效值比較:
如果采樣值=當前有效值,則計數器清零
如果采樣值<>當前有效值,則計數器+1,并判斷計數器是否>=上限 N(溢出)
如果計數器溢出,則將本次值替換當前有效值,并清計數器
10.限幅消抖濾波法
相當于“限幅濾波法”+“消抖濾波法”; 先限幅,后消抖
以上算法截取自https://blog.csdn.net/u011852186/article/details/126484032
11.卡爾曼濾波
下面是一個極簡卡爾曼濾波。
算法的核心思想是,根據當前的儀器”測量值” 和上一刻的 “預測量” 和 “誤差”,計算得到當前的最優量.
再預測下一刻的量, 里面比較突出的是觀點是. 把誤差納入計算, 而且分為預測誤差和測量誤差兩種.通稱為 噪聲. 還有一個非常大的特點是,誤差獨立存在, 始終不受測量數據的影響。
R值固定,Q值越大,代表越信任測量值,Q值無窮大,代表只用測量值。
Q值越小,代表越信任模型預測值,Q值為0,代表只用模型預測值。
float KalmanFilter( float inData )
{
}static float prevData = 0; //上一個數據
static float p = 10, q = 0.001, r = 0.001, kGain = 0; // q 控制誤差 r 控制響應速度
p = p + q;
kGain = p / ( p + r ); //計算卡爾曼增益
inData = prevData + ( kGain * ( inData – prevData ) ); //計算本次濾波估計值
p = ( 1 – kGain ) * p; //更新測量方差
prevData = inData;
return inData;
}
原文鏈接:https://blog.csdn.net/qq_36296398/article/details/110760647
除了上述濾波算法外,其他一些濾波技術如自適應濾波、維納濾波、小波濾波、卷積濾波、混沌濾波、機器學習濾波等等已過濾掉我等雜波信號,不再鏈接,網友自行探索。
工程應用中,偶有ADC采樣異常或者需要采樣值更加平穩之類的需求,在硬件設計已經完成的情況下,常采用一些軟件算法來彌補不足,增強系統魯棒性。本篇主要記錄分享強大網友的智慧結晶。
1. 限幅濾波法(又稱程序判斷濾波法)
設隨機變量為X,定義一誤差幅值A,濾除|Xn-Xn-1|>A的值。
2. 中位值濾波法
連續采樣奇數次,排序取中間值。
3.算數平均濾波法
連續取 N個采樣值進行算術平均運算。
4.遞推平均濾波法(又稱滑動平均濾波法)
把連續取 N 個采樣值看成一個隊列
隊列的長度固定為 N
每次采樣到一個新數據放入隊尾,并扔掉原來隊首的一次數據(先進先出原則)
把隊列中的 N 個數據進行算術平均運算,就可獲得新的濾波結果
5.中位值平均濾波法(又稱防脈沖干擾平均濾波法)
相當于“中位值濾波法”+“算術平均濾波法”
連續采樣 N 個數據,去掉一個最大值和一個最小值
然后計算 N-2 個數據的算術平均值
6.限幅平均濾波法
相當于“限幅濾波法”+“遞推平均濾波法”
每次采樣到的新數據先進行限幅處理,
再送入隊列進行遞推平均濾波處理
7.一階滯后濾波法
取 a=0~1
本次濾波結果=(1-a) 本次采樣值+a上次濾波結果
8.加權遞推平均濾波法
是對遞推平均濾波法的改進,即不同時刻的數據加以不同的權
通常是,越接近現時刻的數據,權取得越大。
給予新采樣值的權系數越大,則靈敏度越高,但信號平滑度越低
9.消抖濾波法
設置一個濾波計數器
將每次采樣值與當前有效值比較:
如果采樣值=當前有效值,則計數器清零
如果采樣值<>當前有效值,則計數器+1,并判斷計數器是否>=上限 N(溢出)
如果計數器溢出,則將本次值替換當前有效值,并清計數器
10.限幅消抖濾波法
相當于“限幅濾波法”+“消抖濾波法”; 先限幅,后消抖
以上算法截取自https://blog.csdn.net/u011852186/article/details/126484032
11.卡爾曼濾波
下面是一個極簡卡爾曼濾波。
算法的核心思想是,根據當前的儀器”測量值” 和上一刻的 “預測量” 和 “誤差”,計算得到當前的最優量.
再預測下一刻的量, 里面比較突出的是觀點是. 把誤差納入計算, 而且分為預測誤差和測量誤差兩種.通稱為 噪聲. 還有一個非常大的特點是,誤差獨立存在, 始終不受測量數據的影響。
R值固定,Q值越大,代表越信任測量值,Q值無窮大,代表只用測量值。
Q值越小,代表越信任模型預測值,Q值為0,代表只用模型預測值。
float KalmanFilter( float inData )
{
}static float prevData = 0; //上一個數據
static float p = 10, q = 0.001, r = 0.001, kGain = 0; // q 控制誤差 r 控制響應速度
p = p + q;
kGain = p / ( p + r ); //計算卡爾曼增益
inData = prevData + ( kGain * ( inData – prevData ) ); //計算本次濾波估計值
p = ( 1 – kGain ) * p; //更新測量方差
prevData = inData;
return inData;
}
原文鏈接:https://blog.csdn.net/qq_36296398/article/details/110760647
除了上述濾波算法外,其他一些濾波技術如自適應濾波、維納濾波、小波濾波、卷積濾波、混沌濾波、機器學習濾波等等已過濾掉我等雜波信號,不再鏈接,網友自行探索。
地點:深圳市龍華新區大浪南路德利威工業園
電話:+86-755-29048607/85250091/32939610/32939620
傳真:+86-755-29048607
郵箱:sales@opticres.com