滤波算法(二)—— 中位值滤波算法
1、算法介紹
? ? ? ? 中位值濾波算法的實現方法是采集N個周期的數據,去掉N個周期數據中的最大值和最小值,取剩下的數據的平均值。中位值濾波算法特別適用于會偶然出現異常值的系統。中位值濾波算法應用比較廣泛,比如用于一些比賽的評分,經常是去掉一個最高分去掉一個最低分,將其他評分取平均值作為選手的最終得分。
優點:相比于平均值濾波算法,中位值濾波算法能夠有效濾除偶然的脈沖干擾。
缺點:與平均值濾波算法相同,中位值濾波算法也存在反應速度慢、滯后的問題。
2、實現代碼
? ? ? ??下面的代碼是中位值濾波的示例代碼。
float data[10];float middleFilter(float in_data) {float sum = 0;float temp[10];float change;int i,j;//記錄數據for(i=0; i<9; i++){data[i]=data[i+1];}data[9] = in_data;//復制數據for(i=0; i<10; i++)temp[i] = data[i];//冒泡法排序for(i=1; i<10; i++)for(j=0; j<10-i; j++){if(temp[j] > temp[j+1]){change = temp[j];temp[j] = temp[j+1];temp[j+1] = change;}}//求和for(i=1; i<9; i++)sum = sum + temp[i];//返回平均值return(sum/8);}? ? ? ? 在上面的代碼中,分為幾個步驟:
步驟1:讀取新數據,并更新數據數組;
步驟2:復制數據到臨時數組,以便保持原始數據的順序不變;
步驟3:對臨時數組進行排序;
步驟4:計算中位平均值。
3、示例
? ? ? ??下面我們通過一個示例來體會中位值濾波的作用,濾波對象為車速信號,濾波效果如下圖所示。圖中,橫軸為時間,單位:秒,縱軸為速度,單位km/h。其中,藍色為濾波前的數據,紅色為濾波后的數據。有圖中可以看出,原始數據存在兩個異常值,可能是采集過程的數據干擾或數據處理時的異常等原因造成的。采用中位值濾波算法可以有效濾波這種異常值造成的影響。
相對于中位值濾波算法,平均值濾波算法則無法解決這個問題,如下圖所示,為采用平均值濾波算法對相同的原始數據進行處理的效果,可以看到平均值濾波無法濾波異常值,而且異常值影響的時間比較長。
總結
以上是生活随笔為你收集整理的滤波算法(二)—— 中位值滤波算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【2020年】CRISPR基因编辑技术最
- 下一篇: Mac ffmpeg推流记录