【发布时间】:2015-04-05 12:24:23
【问题描述】:
【问题讨论】:
-
您想要一个图作为四条曲线的平均值,还是过滤每条曲线?
-
嘿克里斯托夫,我想平均每个图中的值。但我想对不同的细分进行平均,因此顺应趋势。我不想要 t_init 到 t_final 之间的固定平均值。
标签: gnuplot noise noise-reduction
【问题讨论】:
标签: gnuplot noise noise-reduction
要平滑噪声曲线,您至少有两种策略:一种是使用平滑内核,例如高斯函数,它可以为您提供局部平均值。如果您知道数据的函数形式,另一种是计算总平均值或插值函数。两者都可以用 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"
【讨论】:
fit [0:5] a ...