Gnuplot:在对数坐标轴中使用拟合

6

我需要进行线性近似,但是需要在对数尺度上进行。

这是我的gnuplot脚本:

f(x)= a*x+b
fit f(x) "d0.dat" via a,b
set logscale x
set logscale y
plot "d0.dat" with points lt rgb "#ff0000" title "Points", \
f(x) with lines lt rgb "#ff00ff" title "Approximation"

enter image description here

显然这个近似是错误的。有没有人可以帮我修正它?在谷歌上我没有找到任何信息。


请提供您的d0.dat文件。 - user829755
2个回答

4

Gnuplot能够正确地将你的数据拟合到提供的函数上——一条直线。

问题在于,使用对数刻度的y轴并不会缩放数据,只是改变了数据的绘图方式。

尝试将其拟合到一个幂律函数上:

f(x)= a*x**b
fit f(x) "d0.dat" via a,b
set logscale x
set logscale y
plot "d0.dat" with points lt rgb "#ff0000" title "Points", \
f(x) with lines lt rgb "#ff00ff" title "Approximation"

4
我建议直接使用对数比例尺进行适配:
fl(x) = a+b*x
fit fl(x) 'data.dat'  u (log($1)):(log($2))  via a,b
replot exp(fl(log(x))) t 'log approx'

当大 x 的几个值不在拟合范围内时,差异是明显的。否则成本函数会受到过于强烈的影响(因为 x 和 y 呈指数增长) 。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接