找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 26|回复: 0

滑动平均滤波

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-6-17 22:03:31 | 显示全部楼层 |阅读模式
//
// 滑动平均滤波(递推平均滤波) Moving Average Filter
//
// 把连续取得的N个采样值看成一个队列,队列的长度固定为N
// 每次采样的一个新数据放入队尾,并扔掉原来队首的一次数据
// 把队列中的N个数据进行算术平均,即滤波输出
//
// 适用:高频震荡系统,周期性干扰
//

#T_On(IN := NOT #T_Off.Q,
      PT := #Period / 2);
#T_Off(IN := #T_On.Q,
       PT := #Period / 2);
#Trigger(CLK := #T_On.Q);  // 采样触发,周期 = Period


IF #Trigger.Q THEN
    FOR #i := 1 TO #Window - 1 DO   // 采样队列滑动
        #Buff[#i + 1] := #Buff[#i];
    END_FOR;
    #Buff[1] := #Sample_In;  // 新采样值入列

    #SUM := 0.0;
    FOR #i := 1 TO #Window DO
        #SUM := #SUM + #Buff[#i];
    END_FOR;
    #Filter_Out := #SUM / #Window;   // 队列平均值
END_IF;



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|笔记

GMT+8, 2025-7-7 04:11 , Processed in 0.036087 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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