十大滤波算法的实现.docx

上传人:b****6 文档编号:8667316 上传时间:2023-02-01 格式:DOCX 页数:62 大小:30.71KB
下载 相关 举报
十大滤波算法的实现.docx_第1页
第1页 / 共62页
十大滤波算法的实现.docx_第2页
第2页 / 共62页
十大滤波算法的实现.docx_第3页
第3页 / 共62页
十大滤波算法的实现.docx_第4页
第4页 / 共62页
十大滤波算法的实现.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

十大滤波算法的实现.docx

《十大滤波算法的实现.docx》由会员分享,可在线阅读,更多相关《十大滤波算法的实现.docx(62页珍藏版)》请在冰豆网上搜索。

十大滤波算法的实现.docx

十大滤波算法的实现

1、限幅滤波法(又称程序判断滤波法)

2、中位值滤波法

3、算术平均滤波法

4、递推平均滤波法(又称滑动平均滤波法)

5、中位值平均滤波法(又称防脉冲干扰平均滤波法)

6、限幅平均滤波法

7、一阶滞后滤波法

8、加权递推平均滤波法

9、消抖滤波法

10、限幅消抖滤波法

1、限幅滤波法(又称程序判断滤波法)

1./*

2.A、名称:

限幅滤波法(又称程序判断滤波法)

3.B、方法:

4.根据经验判断,确定两次采样允许的最大偏差值(设为A),

5.每次检测到新值时判断:

6.如果本次值与上次值之差<=A,则本次值有效,

7.如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。

8.C、优点:

9.能有效克服因偶然因素引起的脉冲干扰。

10.D、缺点:

11.无法抑制那种周期性的干扰。

12.平滑度差。

13.E、整理:

shenhaiyu2013-11-01

14.*/

15.

16.intFilter_Value;

17.intValue;

18.

19.voidsetup(){

20.Serial.begin(9600);//初始化串口通信

21.randomSeed(analogRead(0));//产生随机种子

22.Value=300;

23.}

24.

25.voidloop(){

26.Filter_Value=Filter();//获得滤波器输出值

27.Value=Filter_Value;//最近一次有效采样的值,该变量为全局变量

28.Serial.println(Filter_Value);//串口输出

29.delay(50);

30.}

31.

32.//用于随机产生一个300左右的当前值

33.intGet_AD(){

34.returnrandom(295,305);

35.}

36.

37.//限幅滤波法(又称程序判断滤波法)

38.#defineFILTER_A1

39.intFilter(){

40.intNewValue;

41.NewValue=Get_AD();

42.if(((NewValue-Value)>FILTER_A)||((Value-NewValue)>FILTER_A))

43.returnValue;

44.else

45.returnNewValue;

46.}

1./*

2.

3.A、名称:

限幅滤波法(又称程序判断滤波法)

4.

5.B、方法:

6.

7.根据经验判断,确定两次采样允许的最大偏差值(设为A),

8.

9.每次检测到新值时判断:

10.

11.如果本次值与上次值之差<=A,则本次值有效,

12.

13.如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值。

14.

15.C、优点:

16.

17.能有效克服因偶然因素引起的脉冲干扰。

18.

19.D、缺点:

20.

21.无法抑制那种周期性的干扰。

22.

23.平滑度差。

24.

25.E、整理:

shenhaiyu2013-11-01

26.

27.*/

28.

29.

30.

31.intFilter_Value;

32.

33.intValue;

34.

35.

36.

37.voidsetup(){

38.

39.Serial.begin(9600);//初始化串口通信

40.

41.randomSeed(analogRead(0));//产生随机种子

42.

43.Value=300;

44.

45.}

46.

47.

48.

49.voidloop(){

50.

51.Filter_Value=Filter();//获得滤波器输出值

52.

53.Value=Filter_Value;//最近一次有效采样的值,该变量为全局变量

54.

55.Serial.println(Filter_Value);//串口输出

56.

57.delay(50);

58.

59.}

60.

61.

62.

63.//用于随机产生一个300左右的当前值

64.

65.intGet_AD(){

66.

67.returnrandom(295,305);

68.

69.}

70.

71.

72.

73.//限幅滤波法(又称程序判断滤波法)

74.

75.#defineFILTER_A1

76.

77.intFilter(){

78.

79.intNewValue;

80.

81.NewValue=Get_AD();

82.

83.if(((NewValue-Value)>FILTER_A)||((Value-NewValue)>FILTER_A))

84.

85.returnValue;

86.

87.else

88.

89.returnNewValue;

90.

91.}

92.

 

2、中位值滤波法

1./*

2.A、名称:

中位值滤波法

3.B、方法:

4.连续采样N次(N取奇数),把N次采样值按大小排列,

5.取中间值为本次有效值。

6.C、优点:

7.能有效克服因偶然因素引起的波动干扰;

8.对温度、液位的变化缓慢的被测参数有良好的滤波效果。

9.D、缺点:

10.对流量、速度等快速变化的参数不宜。

11.E、整理:

shenhaiyu2013-11-01

12.*/

13.

14.intFilter_Value;

15.

16.voidsetup(){

17.Serial.begin(9600);//初始化串口通信

18.randomSeed(analogRead(0));//产生随机种子

19.}

20.

21.voidloop(){

22.Filter_Value=Filter();//获得滤波器输出值

23.Serial.println(Filter_Value);//串口输出

24.delay(50);

25.}

26.

27.//用于随机产生一个300左右的当前值

28.intGet_AD(){

29.returnrandom(295,305);

30.}

31.

32.//中位值滤波法

33.#defineFILTER_N101

34.intFilter(){

35.intfilter_buf[FILTER_N];

36.inti,j;

37.intfilter_temp;

38.for(i=0;i

39.filter_buf[i]=Get_AD();

40.delay

(1);

41.}

42.//采样值从小到大排列(冒泡法)

43.for(j=0;j

44.for(i=0;i

45.if(filter_buf[i]>filter_buf[i+1]){

46.filter_temp=filter_buf[i];

47.filter_buf[i]=filter_buf[i+1];

48.filter_buf[i+1]=filter_temp;

49.}

50.}

51.}

52.returnfilter_buf[(FILTER_N-1)/2];

53.}

1./*

2.

3.A、名称:

中位值滤波法

4.

5.B、方法:

6.

7.连续采样N次(N取奇数),把N次采样值按大小排列,

8.

9.取中间值为本次有效值。

10.

11.C、优点:

12.

13.能有效克服因偶然因素引起的波动干扰;

14.

15.对温度、液位的变化缓慢的被测参数有良好的滤波效果。

16.

17.D、缺点:

18.

19.对流量、速度等快速变化的参数不宜。

20.

21.E、整理:

shenhaiyu2013-11-01

22.

23.*/

24.

25.

26.

27.intFilter_Value;

28.

29.

30.

31.voidsetup(){

32.

33.Serial.begin(9600);//初始化串口通信

34.

35.randomSeed(analogRead(0));//产生随机种子

36.

37.}

38.

39.

40.

41.voidloop(){

42.

43.Filter_Value=Filter();//获得滤波器输出值

44.

45.Serial.println(Filter_Value);//串口输出

46.

47.delay(50);

48.

49.}

50.

51.

52.

53.//用于随机产生一个300左右的当前值

54.

55.intGet_AD(){

56.

57.returnrandom(295,305);

58.

59.}

60.

61.

62.

63.//中位值滤波法

64.

65.#defineFILTER_N101

66.

67.intFilter(){

68.

69.intfilter_buf[FILTER_N];

70.

71.inti,j;

72.

73.intfilter_temp;

74.

75.for(i=0;i

76.

77.filter_buf[i]=Get_AD();

78.

79.delay

(1);

80.

81.}

82.

83.//采样值从小到大排列(冒泡法)

84.

85.for(j=0;j

86.

87.for(i=0;i

88.

89.if(filter_buf[i]>filter_buf[i+1]){

90.

91.filter_temp=filter_buf[i];

92.

93.filter_buf[i]=filter_buf[i+1];

94.

95.filter_buf[i+1]=filter_temp;

96.

97.}

98.

99.}

100.

101.}

102.

103.returnfilter_buf[(FILTER_N-1)/2];

104.

105.}

106.

3、算术平均滤波法

1./*

2.A、名称:

算术平均滤波法

3.B、方法:

4.连续取N个采样值进行算术平均运算:

5.N值较大时:

信号平滑度较高,但灵敏度较低;

6.N值较小时:

信号平滑度较低,但灵敏度较高;

7.N值的选取:

一般流量,N=12;压力:

N=4。

8.C、优点:

9.适用于对一般具有随机干扰的信号进行滤波;

10.这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动。

11.D、缺点:

12.对于测量速度较慢或要求数据计算速度较快的实时控制不适用;

13.比较浪费RAM。

14.E、整理:

shenhaiyu2013-11-01

15.*/

16.

17.intFilter_Value;

18.

19.voidsetup(){

20.Serial.begin(9600);//初始化串口通信

21.randomSeed(analogRead(0));//产生随机种子

22.}

23.

24.voidloop(){

25.Filter_Value=Filter();//获得滤波器输出值

26.Serial.println(Filter_Value);//串口输出

27.delay(50);

28.}

29.

30.//用于随机产生一个300左右的当前值

31.intGet_AD(){

32.returnrandom(295,305);

33.}

34.

35.//算术平均滤波法

36.#defineFILTER_N12

37.intFilter(){

38.inti;

39.intfilter_sum=0;

40.for(i=0;i

41.filter_sum+=Get_AD();

42.delay

(1);

43.}

44.return(int)(filter_sum/FILTER_N);

45.}

1./*

2.

3.A、名称:

算术平均滤波法

4.

5.B、方法:

6.

7.连续取N个采样值进行算术平均运算:

8.

9.N值较大时:

信号平滑度较高,但灵敏度较低;

10.

11.N值较小时:

信号平滑度较低,但灵敏度较高;

12.

13.N值的选取:

一般流量,N=12;压力:

N=4。

14.

15.C、优点:

16.

17.适用于对一般具有随机干扰的信号进行滤波;

18.

19.这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动。

20.

21.D、缺点:

22.

23.对于测量速度较慢或要求数据计算速度较快的实时控制不适用;

24.

25.比较浪费RAM。

26.

27.E、整理:

shenhaiyu2013-11-01

28.

29.*/

30.

31.

32.

33.intFilter_Value;

34.

35.

36.

37.voidsetup(){

38.

39.Serial.begin(9600);//初始化串口通信

40.

41.randomSeed(analogRead(0));//产生随机种子

42.

43.}

44.

45.

46.

47.voidloop(){

48.

49.Filter_Value=Filter();//获得滤波器输出值

50.

51.Serial.println(Filter_Value);//串口输出

52.

53.delay(50);

54.

55.}

56.

57.

58.

59.//用于随机产生一个300左右的当前值

60.

61.intGet_AD(){

62.

63.returnrandom(295,305);

64.

65.}

66.

67.

68.

69.//算术平均滤波法

70.

71.#defineFILTER_N12

72.

73.intFilter(){

74.

75.inti;

76.

77.intfilter_sum=0;

78.

79.for(i=0;i

80.

81.filter_sum+=Get_AD();

82.

83.delay

(1);

84.

85.}

86.

87.return(int)(filter_sum/FILTER_N);

88.

89.}

90.

4、递推平均滤波法(又称滑动平均滤波法)

1./*

2.A、名称:

递推平均滤波法(又称滑动平均滤波法)

3.B、方法:

4.把连续取得的N个采样值看成一个队列,队列的长度固定为N,

5.每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),

6.把队列中的N个数据进行算术平均运算,获得新的滤波结果。

7.N值的选取:

流量,N=12;压力,N=4;液面,N=4-12;温度,N=1-4。

8.C、优点:

9.对周期性干扰有良好的抑制作用,平滑度高;

10.适用于高频振荡的系统。

11.D、缺点:

12.灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差;

13.不易消除由于脉冲干扰所引起的采样值偏差;

14.不适用于脉冲干扰比较严重的场合;

15.比较浪费RAM。

16.E、整理:

shenhaiyu2013-11-01

17.*/

18.

19.intFilter_Value;

20.

21.voidsetup(){

22.Serial.begin(9600);//初始化串口通信

23.randomSeed(analogRead(0));//产生随机种子

24.}

25.

26.voidloop(){

27.Filter_Value=Filter();//获得滤波器输出值

28.Serial.println(Filter_Value);//串口输出

29.delay(50);

30.}

31.

32.//用于随机产生一个300左右的当前值

33.intGet_AD(){

34.returnrandom(295,305);

35.}

36.

37.//递推平均滤波法(又称滑动平均滤波法)

38.#defineFILTER_N12

39.intfilter_buf[FILTER_N+1];

40.intFilter(){

41.inti;

42.intfilter_sum=0;

43.filter_buf[FILTER_N]=Get_AD();

44.for(i=0;i

45.filter_buf[i]=filter_buf[i+1];//所有数据左移,低位仍掉

46.filter_sum+=filter_buf[i];

47.}

48.return(int)(filter_sum/FILTER_N);

49.}

1./*

2.

3.A、名称:

递推平均滤波法(又称滑动平均滤波法)

4.

5.B、方法:

6.

7.把连续取得的N个采样值看成一个队列,队列的长度固定为N,

8.

9.每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),

10.

11.把队列中的N个数据进行算术平均运算,获得新的滤波结果。

12.

13.N值的选取:

流量,N=12;压力,N=4;液面,N=4-12;温度,N=1-4。

14.

15.C、优点:

16.

17.对周期性干扰有良好的抑制作用,平滑度高;

18.

19.适用于高频振荡的系统。

20.

21.D、缺点:

22.

23.灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差;

24.

25.不易消除由于脉冲干扰所引起的采样值偏差;

26.

27.不适用于脉冲干扰比较严重的场合;

28.

29.比较浪费RAM。

30.

31.E、整理:

shenhaiyu2013-11-01

32.

33.*/

34.

35.

36.

37.intFilter_Value;

38.

39.

40.

41.voidsetup(){

42.

43.Serial.begin(9600);//初始化串口通信

44.

45.randomSeed(analogRead(0));//产生随机种子

46.

47.}

48.

49.

50.

51.voidloop(){

52.

53.Filter_Value=Filter();//获得滤波器输出值

54.

55.Serial.println(Filter_Value);//串口输出

56.

57.delay(50);

58.

59.}

60.

61.

62.

63.//用于随机产生一个300左右的当前值

64.

65.intGet_AD(){

66.

67.returnrandom(295,305);

68.

69.}

70.

71.

72.

73.//递推平均滤波法(又称滑动平均滤波法)

74.

75.#defineFILTER_N12

76.

77.intfilter_buf[FILTER_N+1];

78.

79.intFilter(){

80.

81.inti;

82.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1