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

限幅平均滤波

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-6-17 22:02:40 | 显示全部楼层 |阅读模式
//
// 限幅平均滤波 Limiting Average Filter
// 对信号进行连续多次采样,对采样值限幅后再进行算术平均
// 适用:抑制脉冲干扰,随机干扰
//

#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
    IF #Index <= 0 OR #Index > #Qty THEN
        #Index := 1;
    END_IF;

    IF #Index > 0 AND #Index <= #Qty THEN
        IF ABS(#Sample_In - #Sample_Old) < #Delta THEN  
            #sample_temp := #Sample_In;      // 小于限幅,本次采样值有效
            #Sample_Old := #Sample_In;
        ELSE
            #sample_temp := #Sample_Old;     // 大于限幅,本次采样值无效,取上次采样值
        END_IF;
        #SUM := #SUM + #sample_temp;    // 累加
        #Index := #Index + 1;
    END_IF;

    IF #Index > #Qty THEN
        #Filter_Out := #SUM / #Qty;   // 算术平均
        #Index := 0;
        #SUM := 0.0;
    END_IF;
END_IF;



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 06:57 , Processed in 0.043498 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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