AD采集中的10種經(jīng)典軟件濾波程序優(yōu)缺點分析

在AD采集中經(jīng)常要用到數(shù)字濾波融蹂,而不同情況下又有不同的濾波需求,下面是10種經(jīng)典的軟件濾波方法的程序和優(yōu)缺點分析:

  1惹苗、限幅濾波法(又稱程序判斷濾波法)

  2殿较、中位值濾波法

  3、算術平均濾波法

  4桩蓉、遞推平均濾波法(又稱滑動平均濾波法)

  5淋纲、中位值平均濾波法(又稱防脈沖干擾平均濾波法)

  6、限幅平均濾波法

  7院究、一階滯后濾波法

  8洽瞬、加權遞推平均濾波法

  9、消抖濾波法

  10业汰、限幅消抖濾波法

1伙窃、限副濾波

  A、方法:

  根據(jù)經(jīng)驗判斷样漆,確定兩次采樣允許的最大偏差值(設為A)

  每次檢測到新值時判斷:

  如果本次值與上次值之差《=A为障,則本次值有效

  如果本次值與上次值之差》A,則本次值無效放祟,放棄本次值鳍怨,用上次值代替本次值

  B、優(yōu)點:

  能有效克服因偶然因素引起的脈沖干擾

  C鞋喇、缺點

  無法抑制那種周期性的干擾

  平滑度差

  程序:

  /* A值可根據(jù)實際情況調(diào)整

  value為有效值,new_value為當前采樣值

  濾波程序返回有效的實際值*/

  #define A 10

  char value;

  char filter()

  {

  char new_value;

  new_value = get_ad();

  if ( ( new_value - value 》 A ) || ( value - new_value 》 A ) )

  return value;

  else

  return new_value;

  }

2眉撵、中位值濾波法

  A、方法:

  連續(xù)采樣N次(N取奇數(shù))罐韩,把N次采樣值按大小排列 伴逸,取中間值為本次有效值

  B、優(yōu)點:

  能有效克服因偶然因素引起的波動干擾颓芭,對溫度顷锰、液位的變化緩慢的被測參數(shù)有良好的濾波效果

  C、缺點:

  對流量亡问、速度等快速變化的參數(shù)不宜

  程序:

  /* N值可根據(jù)實際情況調(diào)整

  排序采用冒泡法*/

  #define N 11

  char filter()

  {

  charvalue_buf[N];

  char count官紫,i,j州藕,temp;

  for ( count=0;count《N;count++)

  {

  value_buf[count] = get_ad();

  delay();

  }

  for(j=0;j《N-1;j++)

  {

  for(i=0;i《N-j-1;i++)

  {

  if ( value_buf》value_buf[i+1] )

  {

  temp =value_buf;

  value_buf = value_buf[i+1];

  value_buf[i+1] = temp;

  }

  }

  }

  returnvalue_buf[(N-1)/2];

  }

3束世、算術平均濾波法

  A、方法:

  連續(xù)取N個采樣值進行算術平均運算

  N值較大時:信號平滑度較高床玻,但靈敏度較低

  N值較小時:信號平滑度較低毁涉,但靈敏度較高

  N值的選取:一般流量锈死,N=12贫堰;壓力:N=4

  B、優(yōu)點:

  適用于對一般具有隨機干擾的信號進行濾波

  這樣信號的特點是有一個平均值待牵,信號在某一數(shù)值范圍附近上下波動

  C其屏、缺點:

  對于測量速度較慢或要求數(shù)據(jù)計算速度較快的實時控制不適用

  比較浪費RAM

  程序:

  #define N 12

  char filter()

  {

  int sum = 0;

  for ( count=0;count《N;count++)

  {

  sum + =get_ad();

  delay();

  }

  return (char)(sum/N);

  }

4、遞推平均濾波法(又稱滑動平均濾波法) (FIR前身)

  A缨该、方法:

  把連續(xù)取N個采樣值看成一個隊列

  隊列的長度固定為N

  每次采樣到一個新數(shù)據(jù)放入隊尾偎行,并扔掉原來隊首的一次數(shù)據(jù)。(先進先出原則)

  把隊列中的N個數(shù)據(jù)進行算術平均運算贰拿,就可獲得新的濾波結果

  N值的選雀蛱弧:流量,N=12壮不;壓力:N=4汗盘;液面,N=4~12询一;溫度隐孽,N=1~4

  B、優(yōu)點:

  對周期性干擾有良好的抑制作用健蕊,平滑度高

  適用于高頻振蕩的系統(tǒng)

  C菱阵、缺點:

  靈敏度低

  對偶然出現(xiàn)的脈沖性干擾的抑制作用較差

  不易消除由于脈沖干擾所引起的采樣值偏差

  不適用于脈沖干擾比較嚴重的場合

  比較浪費RAM

  程序:

  #define N 12

  char value_buf[N];

  char i=0;

  char filter()

  {

  char count;

  int sum=0;

  value_buf[i++] = get_ad();

  if ( i == N ) i = 0;

  for ( count=0;count《N,count++)

  sum+ = value_buf[count];

  return (char)(sum/N);

  }

#p#副標題#e#

5缩功、中位值平均濾波法(又稱防脈沖干擾平均濾波法)

  A晴及、方法:

  相當于“中位值濾波法”+“算術平均濾波法”

  連續(xù)采樣N個數(shù)據(jù),去掉一個最大值和一個最小值

  然后計算N-2個數(shù)據(jù)的算術平均值

  N值的選鹊招俊:3~14

  B虑稼、優(yōu)點:

  融合了兩種濾波法的優(yōu)點

  對于偶然出現(xiàn)的脈沖性干擾琳钉,可消除由于脈沖干擾所引起的采樣值偏差

  C、缺點:

  測量速度較慢蛛倦,和算術平均濾波法一樣

  比較浪費RAM

  程序:

  #define N 12

  char filter()

  {

  char count歌懒,i,j;

  char value_buf[N];

  int sum=0;

  for (count=0;count《N;count++)

  {

  value_buf[count] = get_ad();

  delay();

  }

  for (j=0;j《N-1;j++)

  {

  for (i=0;i《N-j-1;i++)

  {

  if ( value_buf》value_buf[i+1] )

  {

  temp = value_buf;

  value_buf = value_buf[i+1];

  value_buf[i+1] = temp;

  }

  }

  }

  for(count=1;count《N-1;count++)

  sum +=value[count];

  return(char)(sum/(N-2));

  }

6溯壶、限幅平均濾波法

  A及皂、方法:

  相當于“限幅濾波法”+“遞推平均濾波法”

  每次采樣到的新數(shù)據(jù)先進行限幅處理,

  再送入隊列進行遞推平均濾波處理

  B且改、優(yōu)點:

  融合了兩種濾波法的優(yōu)點 對于偶然出現(xiàn)的脈沖性干擾验烧,可消除由于脈沖干擾所引起的采樣值偏差

  C、缺點:

  比較浪費RAM

  程序略 參考子程序1又跛、3

7碍拆、一階滯后濾波法

  A、方法:

  取a=0~1

  本次濾波結果=(1-a)*本次采樣值+a*上次濾波結果

  B效扫、優(yōu)點:

  對周期性干擾具有良好的抑制作用 適用于波動頻率較高的場合

  C倔监、缺點:

  相位滯后,靈敏度低 滯后程度取決于a值大小 不能消除濾波頻率高于采樣頻率的1/2的干擾信號

  程序:

  /* 為加快程序處理速度假定基數(shù)為100菌仁,a=0~100 */

  #define a 50

  char value;

  char filter()

  {

  char new_value;

  new_value = get_ad();

  return ((100-a)*value + a*new_value);

  }

8浩习、加權遞推平均濾波法

  A、方法:

  是對遞推平均濾波法的改進济丘,即不同時刻的數(shù)據(jù)加以不同的權

  通常是谱秽,越接近現(xiàn)時刻的數(shù)據(jù),權取得越大摹迷。

  給予新采樣值的權系數(shù)越大疟赊,則靈敏度越高,但信號平滑度越低

  B峡碉、優(yōu)點:

  適用于有較大純滯后時間常數(shù)的對象和采樣周期較短的系統(tǒng)

  C近哟、缺點:

  對于純滯后時間常數(shù)較小,采樣周期較長鲫寄,變化緩慢的信號 不能迅速反應系統(tǒng)當前所受干擾的嚴重程度吉执,濾波效果差

  程序:

  /* coe數(shù)組為加權系數(shù)表,存在程序存儲區(qū)地来。*/

  #define N 12

  char code coe[N] ={1戳玫,2,3未斑,4咕宿,5,6,7府阀,8缆镣,9,10肌似,11费就,12};

  char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;

  char filter()

  {

  char count;

  char value_buf[N];

  int sum=0;

  for (count=0,count《N;count++)

  {

  value_buf[count] = get_ad();

  delay();

  }

  for (count=0川队,count《N;count++)

  sum += value_buf[count]*coe[count];

  return (char)(sum/sum_coe);

  }

9、消抖濾波法

  A睬澡、方法:

  設置一個濾波計數(shù)器

  將每次采樣值與當前有效值比較:

  如果采樣值=當前有效值固额,則計數(shù)器清零

  如果采樣值《》當前有效值,則計數(shù)器+1煞聪,并判斷計數(shù)器是否》=上限N(溢出)

  如果計數(shù)器溢出斗躏,則將本次值替換當前有效值,并清計數(shù)器

  B昔脯、優(yōu)點:

  對于變化緩慢的被測參數(shù)有較好的濾波效果啄糙,

  可避免在臨界值附近控制器的反復開/關跳動或顯示器上數(shù)值抖動

  C、缺點:

  對于快速變化的參數(shù)不宜

  如果在計數(shù)器溢出的那一次采樣到的值恰好是干擾值云稚,則會將干擾值當作有效值導入系統(tǒng)

  程序:

  #define N 12

  char filter()

  {

  char count=0;

  char new_value;

  new_value =get_ad();

  while (value隧饼!=new_value)

  {

  count++;

  if (count》=N)return new_value;

  delay();

  new_value =get_ad();

  }

  return value;

  }

10、限幅消抖濾波法

  A静陈、方法:

  相當于“限幅濾波法”+“消抖濾波法”

  先限幅燕雁,后消抖

  B、優(yōu)點:

  繼承了“限幅”和“消抖”的優(yōu)點

  改進了“消抖濾波法”中的某些缺陷鲸拥,避免將干擾值導入系統(tǒng)

  C拐格、缺點:

  對于快速變化的參數(shù)不宜

  程序略 參考子程序1、9

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刑赶,一起剝皮案震驚了整個濱河市捏浊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撞叨,老刑警劉巖金踪,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異谒所,居然都是意外死亡热康,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門劣领,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姐军,“玉大人,你說我怎么就攤上這事∞刃浚” “怎么了著觉?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惊暴。 經(jīng)常有香客問我饼丘,道長,這世上最難降的妖魔是什么辽话? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任肄鸽,我火速辦了婚禮,結果婚禮上油啤,老公的妹妹穿的比我還像新娘典徘。我一直安慰自己,他們只是感情好益咬,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布逮诲。 她就那樣靜靜地躺著,像睡著了一般幽告。 火紅的嫁衣襯著肌膚如雪梅鹦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天冗锁,我揣著相機與錄音齐唆,去河邊找鬼。 笑死蒿讥,一個胖子當著我的面吹牛蝶念,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芋绸,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼媒殉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了摔敛?” 一聲冷哼從身側響起廷蓉,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎马昙,沒想到半個月后桃犬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡行楞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年攒暇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片子房。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡形用,死狀恐怖就轧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情田度,我是刑警寧澤妒御,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站镇饺,受9級特大地震影響乎莉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奸笤,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一惋啃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧监右,春花似錦肥橙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宠互。三九已至味榛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間予跌,已是汗流浹背搏色。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留券册,地道東北人频轿。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像烁焙,于是被迫代替她去往敵國和親航邢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,349評論 0 2
  • 1.限幅濾波法(程序判斷濾波法) A骄蝇、方法:根據(jù)經(jīng)驗判斷膳殷,確定兩次采樣允許的最大偏差值(設為A)。每次檢測到新值時...
    AndZYH閱讀 2,240評論 0 0
  • 教程一:視頻截圖(Tutorial 01: Making Screencaps) 首先我們需要了解視頻文件的一些基...
    90后的思維閱讀 4,705評論 0 3
  • 對濾波的總結:對特定頻率進行有效提取九火,并對提取部分進行特定的處理(增益赚窃,衰減,濾除)的動作被叫做濾波岔激。 最常用的濾...
    dingtom閱讀 10,494評論 0 3
  • 1. file n. 文件勒极;v. 保存文件2. command n. 命令指令3. use v. 使用用途4. p...
    喵嗚Yuri閱讀 752評論 0 4