gnuplot-自动打印拟合参数

Yot*_*tam 14 gnuplot

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

1   1
2   2
3   3
Run Code Online (Sandbox Code Playgroud)

使用:

a=1
b=1
f(x) = a*x + b
fit f(x) 'data' using 1:2 via a, b
Run Code Online (Sandbox Code Playgroud)

我会的结果a=1b=0.我想用类似的东西打印它们

set label 'a=$a, b=$b' at (1,1)
show label
Run Code Online (Sandbox Code Playgroud)

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

Wol*_*tan 13

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

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
Run Code Online (Sandbox Code Playgroud)

应该完全按照你的目标去做.

请注意,当您的数据有噪音或您的设置功能没有与数据一样精确的结构时,不应出现奇异矩阵求逆问题.例如这个

f(x) = a*x**2 + b
Run Code Online (Sandbox Code Playgroud)

函数应该正常工作而不限制迭代次数.

gnuplot文档(gnuplot.pdf或help set fit)中描述了控制拟合过程的其他方法.