我知道拟合二维数据在gnuplot中的[-1:4]之间的z值是
f(x)=a*x+b
fit [][-1:4] f(x) "data"
但是对于3D数据,如果我只想在f(x)之间的值介于[-1:4]
之前拟合数据f(x)=a*x+b*y+c
fit [][-1:4] f(x) "data"
fit [][][-1:4] f(x) "data"
都错了。为什么?
答案 0 :(得分:1)
我不确定,如果您实际使用2D拟合描述的范围行为,因为它不适用于gnuplot开发版本。根据文档,fit
命令的范围规范仅适用于虚拟变量(即x
和y
)。所以可能是,你的第一个适合命令只是因为一个bug,这是你的一个功能。
要限制z
- 范围,您可以将所需范围之外的所有值设置为1/0
,这会导致未定义的数据点被忽略:
f(x, y) = a*x + b*y + c
zmin = -1
zmax = 4
fit f(x, y) "data" using 1:2:($3 < zmin || $3 > zmax ? 1/0 : $3):(1) via a,b,c
注意,必须为两个虚拟变量x
和y
定义函数,并且必须具有via
语句,这在所有示例中都缺失。
使函数具有两个独立变量,z = f(x,y),是必需的 格式为
using
,有四个项目,x:y:z:s。完整的格式必须是 给定---假设缺少令牌没有默认列。权重 如上所述,从's'评估每个数据点。如果错误估计是 不可用,可以将常量值指定为常量表达式 (请参阅plot datafile using
),例如using 1:2:3:(1)
。
答案 1 :(得分:0)
这绘制了一个3D平面,而不是一条线。我很困惑,直到我缩小并意识到。尝试以下4点数据集。 '设置自动缩放'以确保您看到整个图像。或者只是阅读fit.log文件,并意识到错误很高,表明不合适。
377.4202 -345.5518 2.1142
377.4201 -345.5505 2.5078
377.4206 -345.556 2.8359
377.4288 -345.5555 3.2109