胡超然 徐楓 陳永勝
摘要::數(shù)字濾波具有精度高、可編程、可移植、可復用、便于集成等優(yōu)點,而被廣泛應用于各種數(shù)字設備。本文主要利用信號的隨機特性,考慮信號本身以及噪聲并進行統(tǒng)計,并估算逼近出信號本身。從本質(zhì)上講數(shù)字濾波技術(shù),其實就是多種數(shù)字算法技術(shù)的應用。本文以C語言為編程媒介,介紹幾種常用的數(shù)字濾波技術(shù)。
關(guān)鍵詞:算法;濾波;實用;信號
1 限幅濾波算法
1.1 限幅濾波算法原理及其應用
限幅濾波算法是將最近相鄰兩次采集到的數(shù)據(jù)求差,并求其絕對值。并與系統(tǒng)兩次采樣最大允許的差值進行比較,若小于等于系統(tǒng)最大允許差值,則認為此次采樣有效,否則認為本次采樣無效,系統(tǒng)將上次采樣的數(shù)據(jù)作為本次的采樣數(shù)據(jù)。
由于限幅濾波的這種特性,限幅濾波一般被用于一些被測物理量變化相對緩慢的系統(tǒng),比如溫度、濕度、位移等。當然要取得較好的濾波效果,必須根據(jù)實際的物理對象,設定合適的系統(tǒng)最大允許差值。
1.2 限幅濾波算法的代碼實現(xiàn)
若定義當前采集數(shù)據(jù)為DataCurrent,上次采樣數(shù)據(jù)為DataLast,系統(tǒng)最大允許差值為Value_D,濾波后的數(shù)據(jù)為Data那么限幅濾波的核心C代碼可以這么寫:
If((DataCurrentDataLast)>Value_D||(DataLastDataCurrent)>Value_D)Data=DataLast;
elseData=DataCurrent;
return Data;
2 算術(shù)平均濾波算法
2.1 算術(shù)平均濾波算法原理及其應用
算術(shù)平均濾波的算法比較簡單,就是系統(tǒng)采樣多組數(shù)據(jù),求其平均數(shù)即可。
系統(tǒng)采用算術(shù)濾波算法后,系統(tǒng)的信噪比將提高N倍。算術(shù)平均濾波算法,適用于被測信號在一定時間內(nèi),采樣數(shù)據(jù)在某個數(shù)據(jù)范圍內(nèi)上下浮動的物理量。比如液位、壓力、流量等物理量。需要注意的是采用這種算法時應根據(jù)實際情況選取合適的N,否則若N數(shù)值較大時系統(tǒng)平滑度變高,但靈敏度變低,即外界物理量實際的變化,對于我們通過算法得出的數(shù)據(jù)影響較小;若N的數(shù)值較小時,平滑度變低。
2.2 算術(shù)平均濾波算法的代碼實現(xiàn)
若定義當前一組數(shù)據(jù)的和為DataSum,系統(tǒng)數(shù)據(jù)為Data,get_data為采樣函數(shù),定義濾波后的數(shù)據(jù)為Data,N為采樣次數(shù).那么算術(shù)平均濾波算法的核心C代碼可以這么寫:
for(i=0;iData=DataSum/N;
returnData;
3 加權(quán)平均濾波算法
3.1 加權(quán)平均濾波算法原理及其應用
加權(quán)平均濾波算法是系統(tǒng)連續(xù)N次采樣,并對每次采樣乘以加權(quán)系數(shù),最后求和。
加權(quán)平均濾波算法能夠快速反映系統(tǒng)當前所受干擾的嚴重程度,但由于這種方法需要處理器不斷計算各權(quán)系數(shù),增加了計算量,降低了控制速度,因此這種算法一般應用于純滯后且時間常數(shù)T較大、采用周期過程較短的系統(tǒng)。
3.2 加權(quán)平均濾波算法的代碼實現(xiàn)
定義系統(tǒng)采樣緩存為DataBuff[N];定義采樣次數(shù)N;定義采樣函數(shù)get_data;定義加權(quán)系數(shù)數(shù)組為DataParameter[N]={0.1,0.15,0.2,0.25,0.3}這里注意各權(quán)值相加為1,定義濾波后數(shù)據(jù)為Data需要注意的是在使用這種算法時要根據(jù)實際情況選擇合適的N以及分配好每次采樣相對應的權(quán)值。加權(quán)平均濾波法的核心代碼為:
for(count=0;count