如何在 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 中绘制噪声值的平均值的主要内容,如果未能解决你的问题,请参考以下文章

数学之路-python计算实战-机器视觉-图像产生加性零均值高斯噪声

如何平滑和绘制 x 与 y 的加权平均值,由 x 加权?

Matlab:沿列绘制平均值,通过运行索引进行子集化

如何找到经度和纬度位置的平均值?

时间序列数据:如何找到值的平均重复率?

如何在ggplot的箱线图中按组绘制平均值