簡單濾波演算法的資料
(
#include #include #include #include <./atmel/at89x52.h>
#include "source.h"
main()
unsigned char get_ad(void)
void delay(void)
}/***限幅濾波**/
#define a 10 //設定兩次取樣允許的最大偏差值
char value; //上次採用後的有效值變數
char filter_1(void)
/***中位值濾波法***/
#define n 11 //設定連續取樣的次數
char filter_2(void)}}
return value_buf[(n-1)/2]; //將排序後n個取樣值的中間值作為最後結果返回
}/**算數平均濾波法**/
/* n為進行平均運算的每組取樣值的數量,依據實際情況可以改變*/
#undef n
#define n 12 //設定每組參與平均運算的取樣值個數
char filter_3()}}
for(count=1;counta)||(value-new_value>a)) //比較是否超出最大偏差值
new_value=value; //如果超出,返回上次的有效值作為本次的有效值
sum+=new_value; //累加取樣的有效值
value=new_value;
delay();
}return (char)(sum/n); //將累加值進行平均計算作為返回值
}/**一階滯後濾波法**/
/* 為加快程式處理速度假定基數為100,a=0~100 */
#define coe 50 //定義加權係數
char value; //上乙個取樣值變數
char filter_7()
/**加權遞推平均濾波法**/
/* coe陣列為加權係數表,存在程式儲存區。*/
#undef n
#define n 12 //設定fifo佇列的長度
char code coe[n] = ; //加權係數
char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;
char filter_8()
return value; //如果本次取樣值與當前有效值相等,則返回當前有效值
}/**限幅消抖濾波法**/
/* a值可以根據實際情況調整,value為上次取樣的有效值,new_value為當前取樣值 */
/* n為計數器的溢位值*/
#undef a
#undef n
#define a 10 //設定兩次取樣允許的最大偏差值
#define n 12 //設定計數器溢位值
char value; //有效值變數
char filter_10()
return value; //如果本次取樣值與當前有效值相等,則返回當前有效值
}
10種簡單的數字濾波演算法
10種簡單的數字濾波演算法 c語言源程式 假定從8位ad中讀取資料 如果是更高位的ad可定義資料型別為int 子程式為get ad 1 限副濾波 a值可根據實際情況調整 value為有效值,new value為當前取樣值 濾波程式返回有效的實際值 define a 10 char value cha...
opencv簡單濾波
歸一化塊濾波器 opencv函式 blur 執行了歸一化塊平滑操作。for inti 1 i max kernel length i i 2 我們輸入4個實參 詳細的解釋請參考 reference 高斯濾波器 opencv函式 gaussianblur 執行高斯平滑 for inti 1 i max...
濾波演算法 遞推平均濾波法
基本方法 採用佇列作為測量資料儲存器,設佇列的長度為n 每進行一次測量,把測量結果放於隊尾,而扔掉原來隊首的乙個資料,這樣在佇列中始終就有n個 最新 的資料。當計算平均值時,只要把佇列中的n個資料進行算數平均,就可得到新的算數平均值。這樣每進行一次測量,就可得到乙個新的算術平均值。其程式如下所示 i...