簡單濾波演算法的資料

2021-07-25 14:14:26 字數 1578 閱讀 7858

簡單濾波演算法的資料

(

#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...