Jef*_*ock 12
我需要从非常嘈杂的CPU消耗数据中提取信号.这是Jeff McClintock中值滤波器......
将平均值和中位数初始化为零,然后对于每个样本"英寸",将输入样本的中位数小幅增加.最终它将在大约50%的输入样本更大,50%小于中位数的点处稳定下来.增量的大小应与实际中位数成比例.由于我们不知道实际中位数,因此我将平均值用作粗略估计值.步长计算为估计值的0.01倍.较小的步长更准确,但需要更长时间才能解决.
float median = 0.0f;
float average = 0.0f;
// for each sample
{
average += ( abs(sample) - average ) * 0.1f; // rough running average magnitude.
median += _copysign( average * 0.01, sample - median );
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3655 次 |
最近记录: |