gnuplot-自动打印拟合参数



在gnuplot中,有没有一种方法可以在生成的图形上自动打印拟合参数?例如,如果我适合数据表

1   1
2   2
3   3

使用:

a=1
b=1
f(x) = a*x + b
fit f(x) 'data' using 1:2 via a, b

我将得到结果a=1b=0。我想用之类的东西打印它们

set label 'a=$a, b=$b' at (1,1)
show label

$的把戏不起作用,所以我希望你能给我一些提示。。。

您想要做的事情是完全可能的。你遇到的问题是,你的拟合算法由于奇异矩阵求逆而崩溃。你可以用几种方法来解决这个问题。最简单的方法是限制迭代次数以找到拟合曲线。所以这个脚本:

a=1
b=1
FIT_MAXITER = 1
f(x) = a*x + b
ti = sprintf("%.2fx+%.2f", a, b)
fit f(x) 'data' using 1:2 via a, b
plot [0:3] f(x) t ti, "data" w l

应该做你的目标。

请注意,当数据有噪声或设置函数的结构与数据不完全相同时,不应出现奇异矩阵求逆问题。例如,这个

f(x) = a*x**2 + b

在不限制迭代次数的情况下,函数应该工作得很好。

gnuplot文档(gnuplot.pdf或help set fit(中描述了控制装配过程的其他方法。

我发现了一些非常有趣的东西,可以在这里解决您的问题。解决方案似乎是使用函数sprintf和C的常用语法在字符串上打印。I.E.,如链接中所示:

f(x) = m*x + c
fit f(x) "file" using 3:1 via m,c
set label 1 sprintf("m = %3.4f",m) at 510,75 font ",18"
set label 2 sprintf("c = %3.4f",c) at 510,70 font ",18"

最新更新