在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=1和b=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)中描述了控制拟合过程的其他方法.