如何在 Gnuplot 中绘制噪声值的平均值
Posted
技术标签:
【中文标题】如何在 Gnuplot 中绘制噪声值的平均值【英文标题】:How to plot average of noise values in Gnuplot 【发布时间】:2015-04-05 12:24:23 【问题描述】:是否可以在 Gnuplot 中过滤噪声并获得具有不同集合平均值的图?该图如下所示。
【问题讨论】:
您想要一个图作为四条曲线的平均值,还是过滤每条曲线? 嘿克里斯托夫,我想平均每个图中的值。但我想对不同的细分进行平均,因此顺应趋势。我不想要 t_init 到 t_final 之间的固定平均值。 【参考方案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 ...
以上是关于如何在 Gnuplot 中绘制噪声值的平均值的主要内容,如果未能解决你的问题,请参考以下文章