use*_*501 4 gnuplot xrange curve-fitting data-fitting function-fitting
一个简单的问题-使用set xrange [x_min:x_max]命令可以更改在绘图上绘制的范围。
使用gnuplot中的数据拟合工具拟合函数时,此命令是否还会限制使用的范围?有没有办法手动指定用于函数拟合的范围?(可能是该命令的一个猜测every?我是否需要超越xrange使用every?)
我问的原因是我正在使用xrange绘制放大到低值x区域的输出以更清楚地查看瞬态行为,但是我认为这可能是在xrange之外的较大x值处“切出”函数的值选择的地区?
这是一个古老的问题,但是当前答案是错误的:xrange如果fit命令没有给出明确的范围,则当前设置确实会影响用于拟合的范围。可以通过一个简单的示例轻松看出这一点:如果您的数据文件test.dat包含
1 1
2 2
3 3
4 4
5 6
6 8
7 10
8 12
Run Code Online (Sandbox Code Playgroud)
并使用线性拟合,
fit a+b*x "test.dat" via a,b
plot "test.dat" w p, a+b*x w l
Run Code Online (Sandbox Code Playgroud)
和拟合参数(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
Run Code Online (Sandbox Code Playgroud)
和拟合参数(a,b)=(-4,2)。
至少这是gnuplot 5.2的当前行为,但是2009年的旧线程表明这已经有一段时间了。
set xrange [x_min:x_max]不影响拟合函数时使用的范围。
使用fit命令(同样适用于plot),您可以使用以下语法显式限制范围以适合变量:
[{dummy_variable=}{<min>}{:<max>}]
Run Code Online (Sandbox Code Playgroud)
例如,您可以使用以下命令限制 x 轴的范围:
fit [min:max] f(x) "filename"
Run Code Online (Sandbox Code Playgroud)