VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 666|回复: 2

[求助] 滑动平均滤波算法

[复制链接]
07_avatar_middle
在线会员 18364195932 发表于 2018-4-3 11:34:29 | 显示全部楼层 |阅读模式
3驿站币
这是一个滑动滤波算法程序代码如下:
  1. char value_buf[N];
  2. char i = 0;
  3. char filter_5()
  4. {
  5.         char count;
  6.         int sum = 0;
  7.         value_buf[i++] = get_ad();
  8.         if (i == N) i = 0;

  9.         for (count = 0; count < N; count++)
  10.                 sum += value_buf[count];

  11.         return(char)(sum / N);
  12. }
复制代码


我想问一下:里面get_ad();在使用的时候需要包含什么头文件呢?我把这段代码放入到程序中该函数下面有红线提示:未定义的标识符!应该怎么解决?望大神指点





上一篇:Adobe Acrobat打不开jpg什么原因呢
下一篇:有pdf转word的免费工具吗

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-4-3 11:40:05 | 显示全部楼层
这个 get_ad 是假定从8位AD中读取的数据(如果是更高位的AD可定义数据类型为int),现在可以模拟通过键盘输入:
  1. int get_ad()
  2. {
  3.         int foo = 0;
  4.         scanf("%d", &foo);
  5.         return foo;
  6. }
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-4-3 11:41:24 | 显示全部楼层
这里找到了一个示例代码,跟楼主的很像:

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

A、名称:递推平均滤波法(又称滑动平均滤波法)
B、方法:
把连续取得的N个采样值看成一个队列,队列的长度固定为N,
每次采样到一个新数据放入队尾,并扔掉原来队首的一次数据(先进先出原则),
把队列中的N个数据进行算术平均运算,获得新的滤波结果。
N值的选取:流量,N=12;压力,N=4;液面,N=4-12;温度,N=1-4。
C、优点:
对周期性干扰有良好的抑制作用,平滑度高;
适用于高频振荡的系统。
D、缺点:
灵敏度低,对偶然出现的脉冲性干扰的抑制作用较差;
不易消除由于脉冲干扰所引起的采样值偏差;
不适用于脉冲干扰比较严重的场合;
比较浪费RAM。

  1. //test for Recursion average filtering method
  2. #include
  3. int Filter();
  4. int main()
  5. {
  6.         int foo;
  7.         while (1)
  8.         {
  9.                 foo = Filter();
  10.                 printf("the Filter is %d\n", foo);
  11.         }
  12.         return 0;
  13. }
复制代码

  1. int Get_AD(void)
  2. {
  3.         int foo;
  4.         scanf("%d", &foo);
  5.         return foo;
  6. }
复制代码

  1. // 递推平均滤波法(又称滑动平均滤波法)
  2. #define FILTER_N 12
  3. int filter_buf[FILTER_N + 1];
  4. int Filter()
  5. {
  6.         int i;
  7.         int filter_sum = 0;
  8.         filter_buf[FILTER_N] = Get_AD(); //AD转换的值赋给数组最后一个值
  9.         for (i = 0; i < FILTER_N; i++)
  10.         {
  11.                 filter_buf[i] = filter_buf[i + 1]; // 所有数据左移,低位仍掉
  12.                 filter_sum += filter_buf[i];
  13.         }
  14.         return (int)(filter_sum / FILTER_N);
  15. }
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-12-14 00:56

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表