[本文最早寫于 2010-10-07 搜狐博客,因為博客搬家了一起搬到了這里。原創文章,轉載請注明出處]
?gnuplot 中可以利用 smooth 關鍵字實現數據的平滑,平滑的方法有多種,最主要的幾種如下:
unique
freqency
bezier
sbezier
csplines
acsplines
其中 unique 的作用是首先將數據點按照 x 的大小關系排序。如果有多個數據點的 x 值相同的話則取這些數據點的平均值。
freqency 與 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"

?
?
- 前言
- gnuplot 中的數據平滑
- 利用 Maxima 求解常微分方程
- Maxima 的繪圖功能 1
- Maxima 的繪圖功能 2
- Maxima 的繪圖功能 3
- Maxima 矩陣及矢量運算 1
- Maxima 矩陣及矢量運算 3
- Maxima 矩陣及矢量運算 4
- maxima 學習筆記(coeff 函數的應用)
- maxima 代數表達式變換
- maxima 學習筆記(基本微積分)
- maxima 代數方程求解
- Maxima 中的復數運算
- Maxima 的三角函數化簡功能
- Maxima 的基本微積分操作
- 利用 gnuplot 繪制時間序列圖
- gnuplot 入門教程 1
- gnuplot 入門教程 2
- gnuplot 入門教程 3
- gnuplot 入門教程 4
- gnuplot 讀取逗號分隔的數據文件
- scilab 讀取處理 wav 文件
- scilab 讀取處理 wav 文件 (2)
- Scilab 處理聲音數據(補充)
- 利用 SCILAB 設計 FIR 濾波器(窗函數法)
- 利用 SCILAB 設計 FIR 濾波器(Minimax法)
- 利用 SCILAB 設計 iir 濾波器設計(模擬濾波器雙線性變換法)
- Scilab 的繪圖函數(1)
- Scilab 的繪圖函數(2)
- Scilab 的繪圖函數(3)
- Scilab 的繪圖函數(4)