Arduino11大濾波器網(wǎng)上收集_第1頁
Arduino11大濾波器網(wǎng)上收集_第2頁
Arduino11大濾波器網(wǎng)上收集_第3頁
Arduino11大濾波器網(wǎng)上收集_第4頁
Arduino11大濾波器網(wǎng)上收集_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、 限幅濾波法(又稱程序判斷濾波法)1. /*2. A、名稱:限幅濾波法(又稱程序判斷濾波法)3. B、方法:4.     根據(jù)經(jīng)驗(yàn)判斷,確定兩次采樣允許的最大偏差值(設(shè)為A),5.     每次檢測到新值時判斷:6.     如果本次值與上次值之差<=A,則本次值有效,7.     如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值。8. C、優(yōu)點(diǎn):9.     能有效克服因偶然因素引起的脈沖干擾。10. D

2、、缺點(diǎn):11.     無法抑制那種周期性的干擾。12.     平滑度差。13. E、整理:shenhaiyu 2013-11-0114. */15.  16. int Filter_Value;17. int Value;18.  19. void setup() 20.   Serial.begin(9600);       / 初始化串口通信21.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子22.

3、  Value = 300;23. 24.  25. void loop() 26.   Filter_Value = Filter();       / 獲得濾波器輸出值27.   Value = Filter_Value;          / 最近一次有效采樣的值,該變量為全局變量28.   Serial.println(Filter_Value); / 串口輸出29.   del

4、ay(50);30. 31.  32. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值33. int Get_AD() 34.   return random(295, 305);35. 36.  37. / 限幅濾波法(又稱程序判斷濾波法)38. #define FILTER_A 139. int Filter() 40.   int NewValue;41.   NewValue = Get_AD();42.   if(NewValue - Value) > FILTER_A) | (Valu

5、e - NewValue) > FILTER_A)43.     return Value;44.   else45.     return NewValue;46. 1. /*2. 3. A、名稱:限幅濾波法(又稱程序判斷濾波法)4. 5. B、方法:6. 7.     根據(jù)經(jīng)驗(yàn)判斷,確定兩次采樣允許的最大偏差值(設(shè)為A),8. 9.     每次檢測到新值時判斷:10. 11.     如果本次值與上次值之差<=A,則本次值有效,

6、12. 13.     如果本次值與上次值之差>A,則本次值無效,放棄本次值,用上次值代替本次值。14. 15. C、優(yōu)點(diǎn):16. 17.     能有效克服因偶然因素引起的脈沖干擾。18. 19. D、缺點(diǎn):20. 21.     無法抑制那種周期性的干擾。22. 23.     平滑度差。24. 25. E、整理:shenhaiyu 2013-11-0126. 27. */28. 29.  30. 31. int Filter_Value;32. 33.

7、int Value;34. 35.  36. 37. void setup() 38. 39.   Serial.begin(9600);       / 初始化串口通信40. 41.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子42. 43.   Value = 300;44. 45. 46. 47.  48. 49. void loop() 50. 51.   Filter_Value = Filter();  &

8、#160;    / 獲得濾波器輸出值52. 53.   Value = Filter_Value;          / 最近一次有效采樣的值,該變量為全局變量54. 55.   Serial.println(Filter_Value); / 串口輸出56. 57.   delay(50);58. 59. 60. 61.  62. 63. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值64. 65. int Get_AD() 66. 67.  

9、; return random(295, 305);68. 69. 70. 71.  72. 73. / 限幅濾波法(又稱程序判斷濾波法)74. 75. #define FILTER_A 176. 77. int Filter() 78. 79.   int NewValue;80. 81.   NewValue = Get_AD();82. 83.   if(NewValue - Value) > FILTER_A) | (Value - NewValue) > FILTER_A)84. 85. &#

10、160;   return Value;86. 87.   else88. 89.     return NewValue;90. 91. 92. 二、 中位值濾波法1. /*2. A、名稱:中位值濾波法3. B、方法:4.     連續(xù)采樣N次(N取奇數(shù)),把N次采樣值按大小排列,5.     取中間值為本次有效值。6. C、優(yōu)點(diǎn):7.     能有效克服因偶然因素引起的波動干擾;8.     對溫度、液位的變化緩慢的被測參

11、數(shù)有良好的濾波效果。9. D、缺點(diǎn):10.     對流量、速度等快速變化的參數(shù)不宜。11. E、整理:shenhaiyu 2013-11-0112. */13.  14. int Filter_Value;15.  16. void setup() 17.   Serial.begin(9600);       / 初始化串口通信18.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子19. 20.  21. void loop(

12、) 22.   Filter_Value = Filter();       / 獲得濾波器輸出值23.   Serial.println(Filter_Value); / 串口輸出24.   delay(50);25. 26.  27. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值28. int Get_AD() 29.   return random(295, 305);30. 31.  32. / 中位值濾波法33. #define FILTER_N 10

13、134. int Filter() 35.   int filter_bufFILTER_N;36.   int i, j;37.   int filter_temp;38.   for(i = 0; i < FILTER_N; i+) 39.     filter_bufi = Get_AD();40.     delay(1);41.   42.   / 采樣值從小到大排列(冒泡法)43.   for(j

14、= 0; j < FILTER_N - 1; j+) 44.     for(i = 0; i < FILTER_N - 1 - j; i+) 45.       if(filter_bufi > filter_bufi + 1) 46.         filter_temp = filter_bufi;47.         filter_bufi = filter_bufi + 1;48. &

15、#160;       filter_bufi + 1 = filter_temp;49.       50.     51.   52.   return filter_buf(FILTER_N - 1) / 2;53. 1. /*2. 3. A、名稱:中位值濾波法4. 5. B、方法:6. 7.     連續(xù)采樣N次(N取奇數(shù)),把N次采樣值按大小排列,8. 9.     取中間值為

16、本次有效值。10. 11. C、優(yōu)點(diǎn):12. 13.     能有效克服因偶然因素引起的波動干擾;14. 15.     對溫度、液位的變化緩慢的被測參數(shù)有良好的濾波效果。16. 17. D、缺點(diǎn):18. 19.     對流量、速度等快速變化的參數(shù)不宜。20. 21. E、整理:shenhaiyu 2013-11-0122. 23. */24. 25.  26. 27. int Filter_Value;28. 29.  30. 31. void setup() 32. 33. &#

17、160; Serial.begin(9600);       / 初始化串口通信34. 35.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子36. 37. 38. 39.  40. 41. void loop() 42. 43.   Filter_Value = Filter();       / 獲得濾波器輸出值44. 45.   Serial.println(Filter_Value); / 串口輸出46

18、. 47.   delay(50);48. 49. 50. 51.  52. 53. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值54. 55. int Get_AD() 56. 57.   return random(295, 305);58. 59. 60. 61.  62. 63. / 中位值濾波法64. 65. #define FILTER_N 10166. 67. int Filter() 68. 69.   int filter_bufFILTER_N;70. 71.   int i, j

19、;72. 73.   int filter_temp;74. 75.   for(i = 0; i < FILTER_N; i+) 76. 77.     filter_bufi = Get_AD();78. 79.     delay(1);80. 81.   82. 83.   / 采樣值從小到大排列(冒泡法)84. 85.   for(j = 0; j < FILTER_N - 1; j+) 86. 87.     f

20、or(i = 0; i < FILTER_N - 1 - j; i+) 88. 89.       if(filter_bufi > filter_bufi + 1) 90. 91.         filter_temp = filter_bufi;92. 93.         filter_bufi = filter_bufi + 1;94. 95.        &#

21、160;filter_bufi + 1 = filter_temp;96. 97.       98. 99.     100. 101.   102. 103.   return filter_buf(FILTER_N - 1) / 2;104. 105. 106. 三、 算術(shù)平均濾波法1. /*2. A、名稱:算術(shù)平均濾波法3. B、方法:4.     連續(xù)取N個采樣值進(jìn)行算術(shù)平均運(yùn)算:5.     N值較大時:信號平滑度較高,但靈

22、敏度較低;6.     N值較小時:信號平滑度較低,但靈敏度較高;7.     N值的選?。阂话懔髁浚琋=12;壓力:N=4。8. C、優(yōu)點(diǎn):9.     適用于對一般具有隨機(jī)干擾的信號進(jìn)行濾波;10.     這種信號的特點(diǎn)是有一個平均值,信號在某一數(shù)值范圍附近上下波動。11. D、缺點(diǎn):12.     對于測量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時控制不適用;13.     比較浪費(fèi)RAM。14. E、整理:she

23、nhaiyu 2013-11-0115. */16.  17. int Filter_Value;18.  19. void setup() 20.   Serial.begin(9600);       / 初始化串口通信21.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子22. 23.  24. void loop() 25.   Filter_Value = Filter();       /

24、 獲得濾波器輸出值26.   Serial.println(Filter_Value); / 串口輸出27.   delay(50);28. 29.  30. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值31. int Get_AD() 32.   return random(295, 305);33. 34.  35. / 算術(shù)平均濾波法36. #define FILTER_N 1237. int Filter() 38.   int i;39.   int filter_sum

25、 = 0;40.   for(i = 0; i < FILTER_N; i+) 41.     filter_sum += Get_AD();42.     delay(1);43.   44.   return (int)(filter_sum / FILTER_N);45. 1. /*2. 3. A、名稱:算術(shù)平均濾波法4. 5. B、方法:6. 7.     連續(xù)取N個采樣值進(jìn)行算術(shù)平均運(yùn)算:8. 9.     N值較大時:

26、信號平滑度較高,但靈敏度較低;10. 11.     N值較小時:信號平滑度較低,但靈敏度較高;12. 13.     N值的選?。阂话懔髁?,N=12;壓力:N=4。14. 15. C、優(yōu)點(diǎn):16. 17.     適用于對一般具有隨機(jī)干擾的信號進(jìn)行濾波;18. 19.     這種信號的特點(diǎn)是有一個平均值,信號在某一數(shù)值范圍附近上下波動。20. 21. D、缺點(diǎn):22. 23.     對于測量速度較慢或要求數(shù)據(jù)計(jì)算速度較快的實(shí)時控制不適用;2

27、4. 25.     比較浪費(fèi)RAM。26. 27. E、整理:shenhaiyu 2013-11-0128. 29. */30. 31.  32. 33. int Filter_Value;34. 35.  36. 37. void setup() 38. 39.   Serial.begin(9600);       / 初始化串口通信40. 41.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子42. 43. 44. 45. 

28、0;46. 47. void loop() 48. 49.   Filter_Value = Filter();       / 獲得濾波器輸出值50. 51.   Serial.println(Filter_Value); / 串口輸出52. 53.   delay(50);54. 55. 56. 57.  58. 59. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值60. 61. int Get_AD() 62. 63.   return random(295, 30

29、5);64. 65. 66. 67.  68. 69. / 算術(shù)平均濾波法70. 71. #define FILTER_N 1272. 73. int Filter() 74. 75.   int i;76. 77.   int filter_sum = 0;78. 79.   for(i = 0; i < FILTER_N; i+) 80. 81.     filter_sum += Get_AD();82. 83.     delay(1);84. 85.  

30、60;86. 87.   return (int)(filter_sum / FILTER_N);88. 89. 90. 四、 遞推平均濾波法(又稱滑動平均濾波法)1. /*2. A、名稱:遞推平均濾波法(又稱滑動平均濾波法)3. B、方法:4.     把連續(xù)取得的N個采樣值看成一個隊(duì)列,隊(duì)列的長度固定為N,5.     每次采樣到一個新數(shù)據(jù)放入隊(duì)尾,并扔掉原來隊(duì)首的一次數(shù)據(jù)(先進(jìn)先出原則),6.     把隊(duì)列中的N個數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,獲得新的濾波結(jié)果。7.  

31、60;  N值的選取:流量,N=12;壓力,N=4;液面,N=4-12;溫度,N=1-4。8. C、優(yōu)點(diǎn):9.     對周期性干擾有良好的抑制作用,平滑度高;10.     適用于高頻振蕩的系統(tǒng)。11. D、缺點(diǎn):12.     靈敏度低,對偶然出現(xiàn)的脈沖性干擾的抑制作用較差;13.     不易消除由于脈沖干擾所引起的采樣值偏差;14.     不適用于脈沖干擾比較嚴(yán)重的場合;15.     比較浪費(fèi)R

32、AM。16. E、整理:shenhaiyu 2013-11-0117. */18.  19. int Filter_Value;20.  21. void setup() 22.   Serial.begin(9600);       / 初始化串口通信23.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子24. 25.  26. void loop() 27.   Filter_Value = Filter();   

33、    / 獲得濾波器輸出值28.   Serial.println(Filter_Value); / 串口輸出29.   delay(50);30. 31.  32. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值33. int Get_AD() 34.   return random(295, 305);35. 36.  37. / 遞推平均濾波法(又稱滑動平均濾波法)38. #define FILTER_N 1239. int filter_bufFILTER_N + 1;40. int Filt

34、er() 41.   int i;42.   int filter_sum = 0;43.   filter_bufFILTER_N = Get_AD();44.   for(i = 0; i < FILTER_N; i+) 45.     filter_bufi = filter_bufi + 1; / 所有數(shù)據(jù)左移,低位仍掉46.     filter_sum += filter_bufi;47.   48.   return

35、 (int)(filter_sum / FILTER_N);49. 1. /*2. 3. A、名稱:遞推平均濾波法(又稱滑動平均濾波法)4. 5. B、方法:6. 7.     把連續(xù)取得的N個采樣值看成一個隊(duì)列,隊(duì)列的長度固定為N,8. 9.     每次采樣到一個新數(shù)據(jù)放入隊(duì)尾,并扔掉原來隊(duì)首的一次數(shù)據(jù)(先進(jìn)先出原則),10. 11.     把隊(duì)列中的N個數(shù)據(jù)進(jìn)行算術(shù)平均運(yùn)算,獲得新的濾波結(jié)果。12. 13.     N值的選?。毫髁?,N=12;壓力,N=4;液面,N=

36、4-12;溫度,N=1-4。14. 15. C、優(yōu)點(diǎn):16. 17.     對周期性干擾有良好的抑制作用,平滑度高;18. 19.     適用于高頻振蕩的系統(tǒng)。20. 21. D、缺點(diǎn):22. 23.     靈敏度低,對偶然出現(xiàn)的脈沖性干擾的抑制作用較差;24. 25.     不易消除由于脈沖干擾所引起的采樣值偏差;26. 27.     不適用于脈沖干擾比較嚴(yán)重的場合;28. 29.     比較浪費(fèi)RAM

37、。30. 31. E、整理:shenhaiyu 2013-11-0132. 33. */34. 35.  36. 37. int Filter_Value;38. 39.  40. 41. void setup() 42. 43.   Serial.begin(9600);       / 初始化串口通信44. 45.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子46. 47. 48. 49.  50. 51. void loop() 52. 53. 

38、60; Filter_Value = Filter();       / 獲得濾波器輸出值54. 55.   Serial.println(Filter_Value); / 串口輸出56. 57.   delay(50);58. 59. 60. 61.  62. 63. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值64. 65. int Get_AD() 66. 67.   return random(295, 305);68. 69. 70. 71.  72. 73.

39、/ 遞推平均濾波法(又稱滑動平均濾波法)74. 75. #define FILTER_N 1276. 77. int filter_bufFILTER_N + 1;78. 79. int Filter() 80. 81.   int i;82. 83.   int filter_sum = 0;84. 85.   filter_bufFILTER_N = Get_AD();86. 87.   for(i = 0; i < FILTER_N; i+) 88. 89.     filter_b

40、ufi = filter_bufi + 1; / 所有數(shù)據(jù)左移,低位仍掉90. 91.     filter_sum += filter_bufi;92. 93.   94. 95.   return (int)(filter_sum / FILTER_N);96. 97. 98. 五、 中位值平均濾波法(又稱防脈沖干擾平均濾波法)1. /*2. A、名稱:中位值平均濾波法(又稱防脈沖干擾平均濾波法)3. B、方法:4.     采一組隊(duì)列去掉最大值和最小值后取平均值,5.    &#

41、160;相當(dāng)于“中位值濾波法”+“算術(shù)平均濾波法”。6.     連續(xù)采樣N個數(shù)據(jù),去掉一個最大值和一個最小值,7.     然后計(jì)算N-2個數(shù)據(jù)的算術(shù)平均值。8.     N值的選?。?-14。9. C、優(yōu)點(diǎn):10.     融合了“中位值濾波法”+“算術(shù)平均濾波法”兩種濾波法的優(yōu)點(diǎn)。11.     對于偶然出現(xiàn)的脈沖性干擾,可消除由其所引起的采樣值偏差。12.     對周期干擾有良好的抑制作用。13. 

42、0;   平滑度高,適于高頻振蕩的系統(tǒng)。14. D、缺點(diǎn):15.     計(jì)算速度較慢,和算術(shù)平均濾波法一樣。16.     比較浪費(fèi)RAM。17. E、整理:shenhaiyu 2013-11-0118. */19.  20. int Filter_Value;21.  22. void setup() 23.   Serial.begin(9600);       / 初始化串口通信24.   randomSee

43、d(analogRead(0); / 產(chǎn)生隨機(jī)種子25. 26.  27. void loop() 28.   Filter_Value = Filter();       / 獲得濾波器輸出值29.   Serial.println(Filter_Value); / 串口輸出30.   delay(50);31. 32.  33. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值34. int Get_AD() 35.   return random(295, 3

44、05);36. 37.  38. / 中位值平均濾波法(又稱防脈沖干擾平均濾波法)(算法1)39. #define FILTER_N 10040. int Filter() 41.   int i, j;42.   int filter_temp, filter_sum = 0;43.   int filter_bufFILTER_N;44.   for(i = 0; i < FILTER_N; i+) 45.     filter_bufi = Get_AD();46. 

45、60;   delay(1);47.   48.   / 采樣值從小到大排列(冒泡法)49.   for(j = 0; j < FILTER_N - 1; j+) 50.     for(i = 0; i < FILTER_N - 1 - j; i+) 51.       if(filter_bufi > filter_bufi + 1) 52.         filter_temp =

46、 filter_bufi;53.         filter_bufi = filter_bufi + 1;54.         filter_bufi + 1 = filter_temp;55.       56.     57.   58.   / 去除最大最小極值后求平均59.   for(i = 1; i < FILTER_N - 1; i

47、+) filter_sum += filter_bufi;60.   return filter_sum / (FILTER_N - 2);61. 62.  63.  64. /  中位值平均濾波法(又稱防脈沖干擾平均濾波法)(算法2)65. /*66. #define FILTER_N 10067. int Filter() 68.   int i;69.   int filter_sum = 0;70.   int filter_max, filter_min;71.   int filte

48、r_bufFILTER_N;72.   for(i = 0; i < FILTER_N; i+) 73.     filter_bufi = Get_AD();74.     delay(1);75.   76.   filter_max = filter_buf0;77.   filter_min = filter_buf0;78.   filter_sum = filter_buf0;79.   for(i = FILTER_N - 1; i > 0; i-)

49、 80.     if(filter_bufi > filter_max)81.       filter_max=filter_bufi;82.     else if(filter_bufi < filter_min)83.       filter_min=filter_bufi;84.     filter_sum = filter_sum + filter_bufi;85.  

50、;   filter_bufi = filter_bufi - 1;86.   87.   i = FILTER_N - 2;88.   filter_sum = filter_sum - filter_max - filter_min + i / 2; / +i/2 的目的是為了四舍五入89.   filter_sum = filter_sum / i;90.   return filter_sum;91. */1. /*2. 3. A、名稱:中位值平均濾波法(又稱防脈沖干擾平均濾波法)4. 5. B、方法:6. 7. &

51、#160;   采一組隊(duì)列去掉最大值和最小值后取平均值,8. 9.     相當(dāng)于“中位值濾波法”+“算術(shù)平均濾波法”。10. 11.     連續(xù)采樣N個數(shù)據(jù),去掉一個最大值和一個最小值,12. 13.     然后計(jì)算N-2個數(shù)據(jù)的算術(shù)平均值。14. 15.     N值的選取:3-14。16. 17. C、優(yōu)點(diǎn):18. 19.     融合了“中位值濾波法”+“算術(shù)平均濾波法”兩種濾波法的優(yōu)點(diǎn)。20. 21.  

52、;   對于偶然出現(xiàn)的脈沖性干擾,可消除由其所引起的采樣值偏差。22. 23.     對周期干擾有良好的抑制作用。24. 25.     平滑度高,適于高頻振蕩的系統(tǒng)。26. 27. D、缺點(diǎn):28. 29.     計(jì)算速度較慢,和算術(shù)平均濾波法一樣。30. 31.     比較浪費(fèi)RAM。32. 33. E、整理:shenhaiyu 2013-11-0134. 35. */36. 37.  38. 39. int Filter_Value;

53、40. 41.  42. 43. void setup() 44. 45.   Serial.begin(9600);       / 初始化串口通信46. 47.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子48. 49. 50. 51.  52. 53. void loop() 54. 55.   Filter_Value = Filter();       / 獲得濾波器輸出值56. 57.  

54、; Serial.println(Filter_Value); / 串口輸出58. 59.   delay(50);60. 61. 62. 63.  64. 65. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值66. 67. int Get_AD() 68. 69.   return random(295, 305);70. 71. 72. 73.  74. 75. / 中位值平均濾波法(又稱防脈沖干擾平均濾波法)(算法1)76. 77. #define FILTER_N 10078. 79. int Filter() 80. 8

55、1.   int i, j;82. 83.   int filter_temp, filter_sum = 0;84. 85.   int filter_bufFILTER_N;86. 87.   for(i = 0; i < FILTER_N; i+) 88. 89.     filter_bufi = Get_AD();90. 91.     delay(1);92. 93.   94. 95.   / 采樣值從小到大排列(冒

56、泡法)96. 97.   for(j = 0; j < FILTER_N - 1; j+) 98. 99.     for(i = 0; i < FILTER_N - 1 - j; i+) 100. 101.       if(filter_bufi > filter_bufi + 1) 102. 103.         filter_temp = filter_bufi;104. 105.      &#

57、160;  filter_bufi = filter_bufi + 1;106. 107.         filter_bufi + 1 = filter_temp;108. 109.       110. 111.     112. 113.   114. 115.   / 去除最大最小極值后求平均116. 117.   for(i = 1; i < FILTER_N - 1; i+)

58、filter_sum += filter_bufi;118. 119.   return filter_sum / (FILTER_N - 2);120. 121. 122. 123.  124. 125.  126. 127. /  中位值平均濾波法(又稱防脈沖干擾平均濾波法)(算法2)128. 129. /*130. 131. #define FILTER_N 100132. 133. int Filter() 134. 135.   int i;136. 137.   int filter_sum = 0;1

59、38. 139.   int filter_max, filter_min;140. 141.   int filter_bufFILTER_N;142. 143.   for(i = 0; i < FILTER_N; i+) 144. 145.     filter_bufi = Get_AD();146. 147.     delay(1);148. 149.   150. 151.   filter_max = filter_buf0;152. 153.   fi

60、lter_min = filter_buf0;154. 155.   filter_sum = filter_buf0;156. 157.   for(i = FILTER_N - 1; i > 0; i-) 158. 159.     if(filter_bufi > filter_max)160. 161.       filter_max=filter_bufi;162. 163.     else if(filter_bufi < filt

61、er_min)164. 165.       filter_min=filter_bufi;166. 167.     filter_sum = filter_sum + filter_bufi;168. 169.     filter_bufi = filter_bufi - 1;170. 171.   172. 173.   i = FILTER_N - 2;174. 175.   filter_sum = filter_sum - filter_ma

62、x - filter_min + i / 2; / +i/2 的目的是為了四舍五入176. 177.   filter_sum = filter_sum / i;178. 179.   return filter_sum;180. 181. */182. 六、 限幅平均濾波法1. /*2. A、名稱:限幅平均濾波法3. B、方法:4.     相當(dāng)于“限幅濾波法”+“遞推平均濾波法”;5.     每次采樣到的新數(shù)據(jù)先進(jìn)行限幅處理,6.     再送入隊(duì)列進(jìn)行遞推平均濾波處理。7. C

63、、優(yōu)點(diǎn):8.     融合了兩種濾波法的優(yōu)點(diǎn);9.     對于偶然出現(xiàn)的脈沖性干擾,可消除由于脈沖干擾所引起的采樣值偏差。10. D、缺點(diǎn):11.     比較浪費(fèi)RAM。12. E、整理:shenhaiyu 2013-11-0113. */14.  15. #define FILTER_N 1216. int Filter_Value;17. int filter_bufFILTER_N;18.  19. void setup() 20.   Serial.be

64、gin(9600);       / 初始化串口通信21.   randomSeed(analogRead(0); / 產(chǎn)生隨機(jī)種子22.   filter_bufFILTER_N - 2 = 300;23. 24.  25. void loop() 26.   Filter_Value = Filter();       / 獲得濾波器輸出值27.   Serial.println(Filter_Value); / 串口輸出

65、28.   delay(50);29. 30.  31. / 用于隨機(jī)產(chǎn)生一個300左右的當(dāng)前值32. int Get_AD() 33.   return random(295, 305);34. 35.  36. / 限幅平均濾波法37. #define FILTER_A 138. int Filter() 39.   int i;40.   int filter_sum = 0;41.   filter_bufFILTER_N - 1 = Get_AD();42. 

66、60; if(filter_bufFILTER_N - 1 - filter_bufFILTER_N - 2) > FILTER_A) | (filter_bufFILTER_N - 2 - filter_bufFILTER_N - 1) > FILTER_A)43.     filter_bufFILTER_N - 1 = filter_bufFILTER_N - 2;44.   for(i = 0; i < FILTER_N - 1; i+) 45.     filter_bufi = filter_bufi + 1;46.     filter_sum += filter_bufi;47.   48.   return (int)filter_sum / (FILTER_N - 1);49. 1. /*2. 3. A、名稱:限幅平均濾波法4. 5. B、方法:6. 7.     相當(dāng)于“限幅濾波法”+“遞推平均濾波法”;8. 9.    

溫馨提示

  • 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

提交評論