gnuplot 中的数据平滑

[本文最早写于 2010-10-07 搜狐博客,因为博客搬家了一起搬到了这里。原创文章,转载请注明出处]

 gnuplot 中可以利用 smooth 关键字实现数据的平滑,平滑的方法有多种,最主要的几种如下:

unique
frequency
bezier
sbezier
csplines
acsplines

其中 unique 的作用是首先将数据点按照 x 的大小关系排序。如果有多个数据点的 x 值相同的话则取这些数据点的平均值。
frequency与 unique差不多,也是首先将数据点按照 x 的大小关系排序,但是如果多个数据点的 x 值相同的话则将这些数据点的 y 值叠加。

bezier 用 n 次 的 bezier 曲线连接数据点,n 是数据点的个数。曲线保证过头尾两个数据点,但是中间的数据点一般就不会经过了。这样的曲线足够光滑但不能保证通过所有的数据点。

sbezier 相当于首先应用 unique 将数据排序并将相同 x 值的数据取平均,然后应用 bezier。

csplines 相当于首先应用 unique 将数据排序并将相同 x 值的数据取平均,然后应用自然样条插值。获得的曲线保证通过所有的数据点(unique 处理过的数据点)。

acsplines 相当于首先应用 unique 将数据排序并将相同 x 值的数据取平均,然后应用加权的自然样条插值。加权值通过 using 关键字指定。
加权后的曲线不一定通过所有的数据点。权值越大就越接近数据点。

下面是一个例子,数据文件 “price.dat"
# Average PQR and XYZ stock price (in dollars per share) per calendar year
1975 49 162
1976 52 144
1977 67 140
1978 53 122
1979 67 125
1980 46 117
1981 60 116
1982 50 113
1983 66 96
1984 70 101
1985 91 93
1986 133 92
1987 127 95
1988 136 79
1989 154 78
1990 127 85
1991 147 71
1992 146 54
1993 133 51
1994 144 49
1995 158 43

命令:
plot "price.dat" using 1:2 with linespoints,"" using 1:2 title "bezier" smooth bezier,"" using 1:2 title "csplines" smooth csplines

plot [1975:1995][40:160] "price.dat" using 1:2 with points title "price.dat", "" u 1:2:(1) smooth acsplines title "1", "" using 1:2:(1/50.) smooth acsplines title "1/50", "" using 1:2:(50) smooth acsplines  title "50", "" using 1:2:(1/10000.) smooth acsplines title "1/10000"

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值