是否可以过滤Gnuplot中的噪音并获得具有不同组平均值的图?情节可以在下面看到。
答案 0 :(得分:4)
为了平滑嘈杂的曲线,您至少有两种策略:一种是使用平滑内核,例如高斯函数,它可以为您提供局部平均值。另一个是如果您知道数据的功能形式,则计算总平均值或插值函数。两者都可以用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"