查看: 7469|回复: 15

[其他] Debug连载帖11——软件滤波算法(2)

[复制链接]
  • TA的每日心情
    郁闷
    2021-3-10 19:44
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    126

    主题

    525

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2018
    最后登录
    2023-12-25
    发表于 2015-9-2 14:15:17 | 显示全部楼层 |阅读模式
    6、限幅平均滤波法
        A、方法:
            相当于“限幅滤波法”+“递推平均滤波法”
            每次采样到的新数据先进行限幅处理,
            再送入队列进行递推平均滤波处理
        B、优点:
            融合了两种滤波法的优点
            对于偶然出现的脉冲性干扰,可消除由于脉冲干扰所引起的采样值偏差
        C、缺点:
            比较浪费RAM

    1. <font size="3">#define N 12
    2. char filter()
    3. {
    4. int  sum = 0;
    5. char  new_value;
    6.    new_value = get_ad();
    7.    if ( ( new_value - value > A ) || ( value - new_value > A )
    8.             ad_value=value;
    9. else
    10. ad_value=new_value;
    11. for ( count=0;count<N;count++)
    12.    {
    13.               sum + = ad_value;
    14.               delay();
    15.    }
    16. }
    17.    return (char)(sum/N);
    18. }</font>
    复制代码

    7、一阶滞后滤波法(用的比较少)
        A、方法:
            取a=0~1
            本次滤波结果=(1-a)*本次采样值+a*上次滤波结果
        B、优点:
            对周期性干扰具有良好的抑制作用
            适用于波动频率较高的场合
        C、缺点:
            相位滞后,灵敏度低
            滞后程度取决于a值大小
            不能消除滤波频率高于采样频率的1/2的干扰信号

    /* 为加快程序处理速度假定基数为100,a=0~100 */
    1. <font size="3">
    2. #define a 50
    3. char value;

    4. char filter()
    5. {
    6.    char  new_value;
    7.    new_value = get_ad();
    8.    return (100-a)*value + a*new_value;
    9. }</font>
    复制代码

    8、加权递推平均滤波法
        A、方法:
            是对递推平均滤波法的改进,即不同时刻的数据加以不同的权
            通常是,越接近现时刻的数据,权取得越大。
            给予新采样值的权系数越大,则灵敏度越高,但信号平滑度越低
        B、优点:
            适用于有较大纯滞后时间常数的对象和采样周期较短的系统
        C、缺点:
            对于纯滞后时间常数较小,采样周期较长,变化缓慢的信号不能迅速反应系统当前所受干扰的严重程度,滤波效果差

    /* coe数组为加权系数表,存在程序存储区。*/
    1. <font size="3">
    2. #define N 12

    3. char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};//设定不同的权值
    4. char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;//权值的总和

    5. char filter()
    6. {
    7.    char count;
    8.    char value_buf[N];
    9.    int  sum=0;
    10.    for (count=0,count<N;count++)
    11.    {
    12.       value_buf[count] = get_ad();
    13.       delay();
    14.    }
    15.    for (count=0,count<N;count++)
    16.       sum += value_buf[count]*coe[count];
    17.    return (char)(sum/sum_coe);
    18. }</font>
    复制代码

    9、消抖滤波法
        A、方法:
            设置一个滤波计数器
            将每次采样值与当前有效值比较:
            如果采样值=当前有效值,则计数器清零
            如果采样值<或者>当前有效值,则计数器+1,并判断计数器是否>=上限N(溢出)
                如果计数器溢出,则将本次值替换当前有效值,并清计数器
        B、优点:
            对于变化缓慢的被测参数有较好的滤波效果,
            可避免在临界值附近控制器的反复开/关跳动或显示器上数值抖动
        C、缺点:
            对于快速变化的参数不宜
            如果在计数器溢出的那一次采样到的值恰好是干扰值,则会将干扰值当作有效值导入系统
    1. <font size="3">#define N 12
    2. char filter()
    3. {
    4.    char count=0;
    5.    char new_value;
    6.    new_value = get_ad();
    7.    while (value !=new_value);
    8.    {
    9.       count++;
    10.       if (count>=N)   
    11. return new_value;
    12.        delay();
    13.       new_value = get_ad();
    14.    }
    15.    return value;   
    16. }</font>
    复制代码

    10、限幅消抖滤波法
        A、方法:
            相当于“限幅滤波法”+“消抖滤波法”。先限幅,后消抖
        B、优点:
            继承了“限幅”和“消抖”的优点
            改进了“消抖滤波法”中的某些缺陷,避免将干扰值导入系统
        C、缺点:
            对于快速变化的参数不宜
    1. <font size="3">#define N 12
    2. char filter()
    3. {
    4. char value;
    5.    char count=0;
    6.    char new_value;
    7.    new_value = get_ad();
    8. if ( ( new_value - value > A ) || ( value - new_value > A )
    9. {
    10.    while (value !=new_value);
    11.    {
    12.       count++;
    13.       if (count>=N)   
    14. return new_value;
    15.        delay();
    16.       new_value = get_ad();
    17.    }
    18. }
    19. else
    20.    return value;   
    21. }</font>
    复制代码

    以上为10中经典的滤波算法,全部介绍完毕了。下一节开始连载卡尔曼滤波。




    我知道答案 目前已有15人回答
    很开心
    回复

    使用道具 举报

    该用户从未签到

    8

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    94
    最后登录
    2018-5-8
    发表于 2015-9-6 09:52:17 | 显示全部楼层
    学习了 ,不错
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2015-9-6 19:28:14 | 显示全部楼层
    很期待你的卡尔曼。。。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    10

    帖子

    0

    注册会员

    Rank: 2

    积分
    75
    最后登录
    2025-7-28
    发表于 2015-9-10 10:04:41 | 显示全部楼层
    赞一个,期待卡尔曼滤波
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-29 16:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    7

    主题

    220

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    452
    最后登录
    2019-3-4
    发表于 2015-9-13 09:28:32 | 显示全部楼层

    多谢分享,学习了,
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-8-12 09:22
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    5

    主题

    119

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    250
    最后登录
    2020-8-12
    发表于 2015-9-16 09:55:49 | 显示全部楼层
    期待卡尔曼
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-6-24 18:51
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    17

    主题

    565

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2011
    最后登录
    2021-3-10
    发表于 2015-9-17 18:44:20 | 显示全部楼层
    最好能举个在具体行业 具体项目应用的例子 下次 ,对应行业的同学碰到了 可以直接拿来主义
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-8-12 09:22
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    5

    主题

    119

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    250
    最后登录
    2020-8-12
    发表于 2015-9-19 10:42:15 | 显示全部楼层
    卡尔曼什么时候介绍
    今天天气不错!签到!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-10-17 08:07
  • 签到天数: 273 天

    连续签到: 1 天

    [LV.8]以坛为家I

    74

    主题

    2338

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7520
    最后登录
    2021-8-30
    发表于 2015-9-19 11:29:05 | 显示全部楼层
    谢谢楼主的分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5788
    最后登录
    2025-5-7
    发表于 2015-9-19 12:40:25 | 显示全部楼层
    太理论了
    154120hhw0q0e0hpw374yw.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-7 15:16 , Processed in 0.113545 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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