gnuplot-自动打印拟合参数

时间:2011-07-06 07:48:21

标签: 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

$技巧不起作用所以我希望你能给我一些提示......

2 个答案:

答案 0 :(得分:12)

你要做的事情很有可能。你要解决的问题是你的拟合算法由于奇异矩阵求逆而崩溃。您可以通过几种方式解决该问题。最简单的方法是限制迭代量以找到拟合曲线。所以这个脚本:

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)中描述了控制拟合过程的其他方法。

答案 1 :(得分:1)

我找到了一些非常有趣的东西可以解决你的问题here。 解决方案似乎是使用函数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"