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

中位值平均滤波

[复制链接]

351

主题

341

回帖

2433

积分

管理员

积分
2433
发表于 2025-6-17 22:03:13 | 显示全部楼层 |阅读模式
//
// 中位值平均滤波 Median Average Filter
// 连续采样N个数据,去掉一个最大值和一个最小值,然后计算N-2个数据的算术平均值
// 适用:高频震荡系统,脉冲干扰、周期性干扰
//

#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
    #Buff[#Index + 1] := #Sample_In;   // 采样值入列
    IF #Index < #QTY THEN
        #Index := #Index + 1;
    END_IF;
    IF #Index = #QTY THEN
        #Min := #Max := #Buff[1];   // 求队列中最小值、最大值
        FOR #j := 1 TO #QTY DO
            IF #Buff[#j] < #Min THEN
                #Min := #Buff[#j];
            END_IF;
            IF #Buff[#j] > #Max THEN
                #Max := #Buff[#j];
            END_IF;
            #SUM := #SUM + #Buff[#j];
        END_FOR;
        #Filter_Out := (#SUM - #Min - #Max) / (#QTY - 2);  // 去掉最小最大值,求平均
        #Index := 0;
    END_IF;
END_IF;



回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-7 06:53 , Processed in 0.037909 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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