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