【问题标题】:Different number of samples for different functions不同功能的不同样本数量
【发布时间】:2013-10-22 17:30:27
【问题描述】:
plot x+3 , x**2+5*x+12 

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

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

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

    第一个变体使用一个临时文件来保存一个低采样率的函数,然后将其与高分辨率函数一起绘制:

    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 时)并在遇到倒数第二个点时使用它。对于最后一点,使用通常的值。

    这适用于您的 2 样本的特殊情况。

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

    4.6.4的结果是:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 2014-03-10
      • 2016-08-28
      相关资源
      最近更新 更多