十大濾波算法程序大全(精心整理版)_第1頁
十大濾波算法程序大全(精心整理版)_第2頁
十大濾波算法程序大全(精心整理版)_第3頁
十大濾波算法程序大全(精心整理版)_第4頁
十大濾波算法程序大全(精心整理版)_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上十大濾波算法程序大全(精心整理版)1、限幅濾波法*函數(shù)名稱:AmplitudeLimiterFilter()-限幅濾波法*優(yōu)點:能有效克服因偶然因素引起的脈沖干擾*缺點:無法抑制那種周期性的干擾,且平滑度差*說明:  1、調(diào)用函數(shù)     GetAD(),該函數(shù)用來取得當(dāng)前值  2、變量說明     Value:最近一次有效采樣的值,該變量為全局變量     NewValue:當(dāng)前采樣的值   

2、60; ReturnValue:返回值  3、常量說明     A:兩次采樣的最大誤差值,該值需要使用者根據(jù)實際情況設(shè)置*入口:Value,上一次有效的采樣值,在主程序里賦值*出口:ReturnValue,返回值,本次濾波結(jié)果*/#define  A   10unsigned char Valueunsigned char AmplitudeLimiterFilter()   unsigned char NewValue;   unsigned char ReturnValu

3、e;   NewValue=GatAD();   if(NewValue-Value)>A)|(Value-NewValue)>A)   ReturnValue=Value;   else ReturnValue=NewValue;   return(ReturnValue); 2、中位值濾波法/*函數(shù)名稱:MiddlevalueFilter()-中位值濾波法*優(yōu)點:能有效克服因偶然因素引起的波動干擾;對溫度、液      

4、 位等變化緩慢的被測參數(shù)有良好的濾波效果*缺點:對流量,速度等快速變化的參數(shù)不宜*說明:  1、調(diào)用函數(shù)     GetAD(),該函數(shù)用來取得當(dāng)前值     Delay(),基本延時函數(shù)  2、變量說明     ArrDataBufferN:用來存放一次性采集的N組數(shù)據(jù)     Temp:完成冒泡法試用的臨時寄存器     i,j,k:循環(huán)試用的參數(shù)值  3、常量說

5、明     N:數(shù)組長度*入口:*出口:value_buf(N-1)/2,返回值,本次濾波結(jié)果*/#define N 11unsigned char MiddlevalueFilter()  unsigned char value_bufN;  unsigned char i,j,k,temp;  for(i=0;i<N;i+)      value_bufi = get_ad();    delay();    for (j=0

6、;j<N-1;j+)     for (k=0;k<N-j;k+)       if(value_bufk>value_bufk+1)            temp = value_bufk;       value_bufk = value_bufk+1;       valu

7、e_bufk+1 = temp;            return value_buf(N-1)/2;3、算術(shù)平均濾波法 /*說明:連續(xù)取N個采樣值進(jìn)行算術(shù)平均運(yùn)算優(yōu)點:試用于對一般具有隨機(jī)干擾的信號進(jìn)行濾波。這種信號的特點是      有一個平均值,信號在某一數(shù)值范圍附近上下波動。缺點:對于測量速度較慢或要求數(shù)據(jù)計算較快的實時控制不適用。*/#define N 12char filter()  unsigned int sum = 0;  u

8、nsigned char i;  for (i=0;i<N;i+)      sum + = get_ad();    delay();    return(char)(sum/N);4、遞推平均濾波法(又稱滑動平均濾波法) /*說明:把連續(xù)N個采樣值看成一個隊列,隊列長度固定為N。      每次采樣到一個新數(shù)據(jù)放入隊尾,并扔掉隊首的一      次數(shù)據(jù)。把隊列中的N各數(shù)據(jù)進(jìn)行平均運(yùn)算,既

9、獲得      新的濾波結(jié)果。優(yōu)點:對周期性干擾有良好的抑制作用,平滑度高;試用于高頻振蕩的系統(tǒng)缺點:靈敏度低;對偶然出現(xiàn)的脈沖性干擾的抑制作用較差,不適于脈沖干      擾較嚴(yán)重的場合*/#define N 12unsigned char value_bufN;unsigned char filter()  unsigned char i;  unsigned char value;  int sum=0;  value_bufi+ = get_ad(

10、);       /采集到的數(shù)據(jù)放入最高位  for(i=0;i<N;i+)      value_bufi=value_bufi+1;   /所有數(shù)據(jù)左移,低位扔掉    sum += value_bufi;    value = sum/N;  return(value);5、中位值平均濾波法(又稱防脈沖干擾平均濾波法) /* 說明:采一組隊列去掉最大值和最小值 優(yōu)點:融合了兩

11、種濾波的優(yōu)點。對于偶然出現(xiàn)的脈沖性干擾,可消       除有其引起的采樣值偏差。對周期干擾有良好的抑制作用,       平滑度高,適于高頻振蕩的系統(tǒng)。 缺點:測量速度慢*/#define N 12uchar filter()  unsigned char i,j,k,l;  unsigned char temp,sum=0,value;  unsigned char value_bufN,;  for(i=0;i<N

12、;i+)      value_bufi = get_ad();    delay();    /采樣值從小到大排列(冒泡法)  for(j=0;j<N-1;j+)      for(i=0;i<N-j;i+)          if(value_bufi>value_bufi+1)       &#

13、160;      temp = value_bufi;        value_bufi = value_bufi+1;        value_bufi+1 = temp;              for(i=1;i<N-1;i+)  sum += value_bufi; 

14、 value = sum/(N-2);  return(value);6、遞推中位值濾波法/* 優(yōu)點:對于偶然出現(xiàn)的脈沖性干擾,可消除由其引起的采樣值偏差。       對周期性干擾有良好的抑制作用,平滑度高;試用于高頻振蕩       的系統(tǒng) 缺點:測量速度慢*/char filter(char new_data,char queue,char n)  char max,min;  char sum;  char

15、i;  queue0=new_data;  max=queue0;  min=queue0;  sum=queue0;  for(i=n-1;i>0;i-)      if(queuei>max)    max=queuei;    else if (queuei<min)    min=queuei;    sum=sum+queuei;  

16、60; queuei=queuei-1;    i=n-2;  sum=sum-max-min+i/2;     /說明:+i/2的目的是為了四舍五入  sum=sum/i;  return(sum);7、限幅平均濾波法/* 優(yōu)點:對于偶然出現(xiàn)的脈沖性干擾,可消除有其引起的采樣值偏差。*/#define A 10#define N 12unsigned char data;unsigned char filter(data)  unsigned char i;  unsign

17、ed char value,sum;  dataN=GetAD();  if(dataN-dataN-1)>A|(dataN-1-dataN)>A)  dataN=dataN-1;  /else dataN=NewValue;  for(i=0;i<N;i+)      datai=datai+1;    sum+=datai;    value=sum/N;  return(value);8、一階滯后濾波法/*函數(shù)名稱:fil

18、ter()-一階滯后濾波法*說明:  1、調(diào)用函數(shù)     GetAD(),該函數(shù)用來取得當(dāng)前值     Delay(),基本延時函數(shù)  2、變量說明     Or_dataN:采集的數(shù)據(jù)     Dr0_flag、Dr1_flag:前一次比較與當(dāng)前比較的方向位     coeff:濾波系數(shù)     F_count:濾波計數(shù)器 

19、 3、常量說明     N:數(shù)組長度     Thre_value:比較門檻值*入口:*出口:*/#define Thre_value  10#define  N   50float Or_dataN;unsigned char Dr0_flag=0,Dr1_flag=0;void abs(float first,float second) float abs; if(first>second)    abs=first

20、-second;   Dr1_flag=0;  else    abs=second-first;   Dr1_flag=1;  return(abs);  void filter(void)  uchar i=0,F_count=0,coeff=0;  float Abs=0.00;  /確定一階濾波系數(shù)  for(i=1;i<N;i+)        

21、60; Abs=abs(Or_datai-1,Or_datai);      if(!(Dr1_flagDr0_flag)                    /前后數(shù)據(jù)變化方向一致                F_count

22、+;        if(Abs>=Thre_value)                   F_count+;          F_count+;           

23、     if(F_count>=12)        F_count=12;        coeff=20*F_count;               else          

24、0;                             /去抖動      coeff=5;      /一階濾波算法      if(Dr1_flag=0)

25、60;                            /當(dāng)前值小于前一個值      Or_datai=Or_datai-1-coeff*(Or_datai-1-Or_datai)/256;      else 

26、     Or_datai=Or_datai-1+coeff*(Or_datai-Or_datai-1)/256;                 F_count=0;                                  /濾波計數(shù)器清零      Dr0_flag=Dr1_flag;    9、加權(quán)遞推平均濾波法/* coe:數(shù)組為加權(quán)系數(shù)表,存在程序存儲區(qū)。 sum_coe:加權(quán)系數(shù)和 */#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論