如何在gnuplot中的zrange中拟合3D数据

时间:2013-08-21 16:47:51

标签: gnuplot

我知道拟合二维数据在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"

都错了。为什么?

2 个答案:

答案 0 :(得分:1)

我不确定,如果您实际使用2D拟合描述的范围行为,因为它不适用于gnuplot开发版本。根据文档,fit命令的范围规范仅适用于虚拟变量(即xy)。所以可能是,你的第一个适合命令只是因为一个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

注意,必须为两个虚拟变量xy定义函数,并且必须具有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