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