针对不同功能的不同数量的样本

时间:2013-10-22 17:30:28

标签: gnuplot

plot x+3 , x**2+5*x+12 

是否可以将x+3设置为只有2个样本而x**2+5*x+12可以在同一个图中说出1000个样本?

1 个答案:

答案 0 :(得分:2)

可以做到,但不是开箱即用。

第一个版本使用临时文件以低采样率保存一个函数,稍后将其与高分辨率函数一起绘制:

set samples 2
set table 'tmp.dat'
plot x+3
unset table
set samples 1000
plot 'tmp.dat' w lp t 'x+3', x**2 + 5*x + 12

这样做的好处是,您可以对这两种功能使用任何采样率。

对于一个函数的2样本的特殊情况,它可以在没有外部文件的情况下完成,但它涉及一些欺骗:

set xrange [-10:10]
s = 1000
set samples s
f1(x) = x + 3

set style func linespoints
set style data linespoints
plot '+' using (x0 = (($0 == 0 || $0 == (s-1) )? $1 : x0), \
                ($0 < (s-2) ? 1/0 : x0)):(f1(x0)) t 'x+3',\
     x**2 + 5*x + 12

我在这里做的是:

  1. 使用特殊文件名+在当前xrange中生成一组坐标。必须设置此项,不能进行自动缩放。
  2. 通过向第一个和第二个点提供值1/0来跳过所有点不起作用,因为剩余的两个点未连接。
  3. 所以我存储了第一个x - 值(当$0column(0)等于0时)并在我遇到第二个最后一点时使用它。对于最后几点,使用了通常的值。
  4. 适用于2样本的特殊情况。

    您必须记住,第一个功能被视为数据,因此您必须同时使用set style dataset style func(仅显示它)。

    4.6.4的结果是:

    enter image description here