【问题标题】: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"