【问题标题】:How to plot average of noise values in Gnuplot如何在 Gnuplot 中绘制噪声值的平均值
【发布时间】:2015-04-05 12:24:23
【问题描述】:

是否可以在 Gnuplot 中过滤噪声并获得具有不同集合平均值的图?该图如下所示。

【问题讨论】:

  • 您想要一个图作为四条曲线的平均值,还是过滤每条曲线?
  • 嘿克里斯托夫,我想平均每个图中的值。但我想对不同的细分进行平均,因此顺应趋势。我不想要 t_init 到 t_final 之间的固定平均值。

标签: gnuplot noise noise-reduction


【解决方案1】:

要平滑噪声曲线,您至少有两种策略:一种是使用平滑内核,例如高斯函数,它可以为您提供局部平均值。如果您知道数据的函数形式,另一种是计算总平均值或插值函数。两者都可以用 gnuplot 完成。

由于您没有提供数据文件,因此我生成了以下文件,其中填充了从 $RANDOM bash 变量中获得的 1000 个随机值:

for i in `seq 1 1 1000`; do echo $RANDOM >> data; done

这应该会生成 0 - 32767 范围内的随机数据,也就是说,对于具有足够代表性的数据样本,平均值应该是 16383.5。让我们绘制它以查看原始数据的外观:

plot "data" t "data", 16383.5 t "theoretical average"

第一种策略是使用高斯核对数据进行平滑处理(smooth kdensity):

plot "data" smooth kdensity t "data", 16383.5 t "theoretical average"

如您所见,此方法在中间提供了很好的平滑,但也考虑到了边缘缺少数据点。

为了防止这种情况发生,我可以通过为第三列提供带宽(在这种情况下等于 10)来增加平滑的“局部性”:

plot "data" u 0:1:(10) smooth kdensity t "data", 16383.5 t "theoretical average"

拟合平均需要fit:

fit a "data" via a
plot "data" t "data", a t "calculated average"

【讨论】:

  • 嘿 Miguel,非常感谢您的回答。如果在整个时间间隔内进行平均,这绝对是有帮助的。是否有可能有一个可以平均的短时间序列?例如,t=0 和 t=5 之间的平均值,然后继续 t=5,t=10。基本上是从平均到平均。这可能吗?
  • 你可以像这样设置间隔fit [0:5] a ...
猜你喜欢
  • 1970-01-01
  • 2017-04-25
  • 2018-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-28
  • 2018-12-28
  • 2015-03-04
  • 2020-02-01
相关资源
最近更新 更多