【问题标题】:gnuplot - Does `set xrange [x_min:x_max]` limit the ranged used for function fit?gnuplot - `set xrange [x_min:x_max]` 是否限制用于函数拟合的范围?
【发布时间】:2015-09-16 13:34:00
【问题描述】:

简单的问题 - 可以使用 set xrange [x_min:x_max] 命令更改绘图上绘制的范围。

在使用 gnuplot 中的数据拟合工具拟合函数时,此命令是否也会限制使用的范围?有没有办法手动指定用于函数拟合的范围? (一种猜测可能是命令every?我是否需要使用every 覆盖xrange?)

我问的原因是我使用 xrange 来绘制在低值 x 区域上放大的输出,以更清楚地查看瞬态行为,但我认为这可能是从拟合较大 x 值的函数中“切掉”值在所选的 xrange 区域之外?

【问题讨论】:

    标签: gnuplot curve-fitting data-fitting xrange function-fitting


    【解决方案1】:

    这是一个老问题,但当前答案不正确:如果 fit 命令中没有给出明确的范围,xrange 的当前设置确实会影响用于拟合的范围。这可以通过一个简单的示例轻松看出:如果您有一个数据文件test.dat,其中包含

    1 1
    2 2
    3 3
    4 4
    5 6
    6 8
    7 10
    8 12
    

    并使用线性拟合,你得到

    fit a+b*x "test.dat" via a,b
    plot "test.dat" w p, a+b*x w l
    

    并拟合参数 (a,b)=(-1.42, 1.59)。但是,如果你首先设置 xrange 你会得到

    set xrange [4:8]
    fit a+b*x "test.dat" via a,b
    plot "test.dat" w p, a+b*x w l
    

    并拟合参数 (a,b)=(-4,2)。

    这至少是 gnuplot 5.2 的当前行为,但 2009 年的 this old thread 表明这种行为已经有一段时间了。

    【讨论】:

      【解决方案2】:

      set xrange [x_min:x_max] 不影响拟合函数时使用的范围。

      使用fit 命令(plot 同样适用),您可以使用以下语法显式限制范围以适应变量:

      [{dummy_variable=}{<min>}{:<max>}]
      

      例如,您可以使用以下命令限制 x 轴的范围:

      fit [min:max] f(x) "filename"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        • 2014-09-30
        • 1970-01-01
        相关资源
        最近更新 更多