2012-03-06 110 views
4

我需要绘制一个函数f(x),其中x是离散的一组值(在我的例子中是正整数)。在使用范围选项时,我找不到指定步长的方法,而样本似乎不是正确的解决方案。最后,我想用平滑的函数近似f(x)在gnuplot中绘制一个具有离散x值的函数

回答

6

我不太明白为什么样品不是您的问题的解决方案。

如果我想在每个整数绘制上与点0和10之间的间隔的sin(x)我使用

set xrange [0:10] 
set sample 11 
plot sin(x) w p 

显然的样本的数目是XMAX-XMIN + 1(10 - 0 + 1 = 11)。

最后要解决近似问题,请看this website讨论线性最小二乘拟合。对于简单的线性插值,使用lp而不是p

+0

如果您有一个与数据点数量相同的样本规格,那么'平滑'样式不起作用。 – Karl 2015-08-19 08:32:24

0

你可以这样做:

plot [1:12] '+' u ($0):(f($0)) 

其中,$0将1,2,...,12。你甚至可以做替代顺利就此。例如:

f(x)=sin(2*x) 
plot [1:12] f(x) t 'the function'\ 
      , '+' u ($0):(f($0)) t 'the points'\ 
      , '+' u ($0):(f($0)) smooth cspline t 'the smooth' 
+0

比特粗略的解决方案。 “$ 0”是行号。 'plot [52:127]“+”us 0:(f($ 0))'已经中断了,除非增加样本数量。我至少会将range范围的较低值添加到$ 0。 – Karl 2015-08-19 08:21:48

+0

顺便说一下,gnuplot 5.1现在不仅具有单个采样范围(5.0中新增),而且还具有单个采样增量。 – Karl 2015-08-19 08:38:33