quote:以下是引用芳季在2010-11-19 12:32:49的发言:
我觉得递推类的算法不应该有最大值最小值概念。
谁知道未来的值将是怎么样。什么的值才是最最值。一个都不能丢弃。
只有是区间平均才有最最值的道理。
设计此滤波器就是为了减小误差,回避干扰,目的也很明确:为了PID调节更加稳定,不再因为偶然出现的干扰脉冲而受影响。
我认为您的意见值得采纳,只要记入数据就把标志位复位。
修改后的库:
点击此处查看附件(说明:新中值滤波库采纳了芳季的思路,丢掉第一个11,最大值标志位置位,写入紧跟的10时,标志位复位。这样再遇到后面的12时,再次被丢弃。
避免了芳季所说的:11丢弃,12反而通过?你不觉得逻辑有问题吗?)
滤波效果图:
点击此处查看附件(说明: 附件是用正弦曲线加随机极值脉冲后的滤波结果。
当中值滤波表长及仿西门子滤波器样本数均为4时,可以比较出中值滤波的优势。
中值滤波近乎完美的响应和巍然不动的平滑,让我非常满意(甚至有些得意,因为用增加3.4mS的扫描周期换来的平滑让我觉得很划算,就按8个PID全部用足也不足30mS)。
而仿西门子滤波器却怎么都逃不掉干扰脉冲带来的影响(因为采集周期的原因,有时甚至看不到原始值的干扰脉冲)。
)