恭喜,你发布的帖子
发布于 2025-12-21 17:54:16
12楼
便于阅读程序,补充一下编程时的几个考虑:
一、假设滤波长度(深度)Num=8。
1、初始化,滤波长度置0,新数据在队列中的指针置0,指向队首。
2、初始化后第一次调用,只有一个值(没有历史数据),直接输出。
3、第二次调用,1个新值+1个历史值,两值平均后输出。
4、第三次调用,1个新值+2个历史值,去掉最大、最小值,中位值输出。
5、第四次、直到第8次调用,去掉最大、最小值,余下的进行平均。
6、大于8次以上的调用,平均数长度不再增长。
二、动态调整滤波长度。
1、滤波数变大,比如从8个变为16个。
本次调用,历史数据7个,加上新数据1个,8个数据参与滤波。
新数据加到队尾,即队列第8个位置。
继续调用,列队再次逐渐增长,直到新的长度16(队列中的历史数据是15个)。
2、滤波数据变小,比如从16个变为8个。
本次调用,历史数据取队列前7个,加上新数据1个,8个数据参与滤波。
如果新数据位置指针在界外,修正到位置0。
请填写推广理由:
分享
只看
楼主