如何在Gnuplot中绘制噪声值的平均值

时间:2015-02-05 15:14:14

标签: gnuplot noise noise-reduction

是否可以过滤Gnuplot中的噪音并获得具有不同组平均值的图?情节可以在下面看到。

2 by 3 grid of noise plots with time along the x-axis and temperature along the y axis http://oi61.tinypic.com/2w54rd0.jpg

1 个答案:

答案 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"

enter image description here

第一种策略是使用高斯内核来平滑数据(smooth kdensity):

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

enter image description here

如您所见,此方法可以在中间为您提供良好的平滑效果,但也会考虑边缘处缺少数据点。

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

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

enter image description here

拟合的平均值需要fit

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

enter image description here