功率曲线拟合在gnuplot中用于冗余值

时间:2013-09-10 07:22:09

标签: gnuplot curve-fitting

我正在尝试使用 gnuplot代码将功效曲线拟合到我的数据中。

set termoption enhanced
f(x) = a*x**b;
fit f(x) 'data.txt' via a,b
plot 'data.txt' with points title 'data points', \
f(x) with lines title sprintf('power fit curve f(x) = %.2f·x^{%.2f}', a, b)

适用于x轴的非冗余数据。 (没有重复)。

但是对于以下类型的数据:它只适用于第一个x值的点,即1,( 已加星标 )。而不是整个数据集。

数据:

1   2194*
1   2675*  
1   1911*  
2   966  
2   1122  
2   951  
2   1356  
3   935  
3   934  
4   851  
4   886  
4   849  
4   597  

1 个答案:

答案 0 :(得分:2)

您必须为ab设置合适的起始值,因为非线性拟合通常没有唯一的最小值。如果您没有指定任何起始值,则假定为1,这在您的情况下完全错误的方向。

所以,使用以下脚本

set termoption enhanced
f(x) = a*x**b
b = -1
a = 2000
fit f(x) 'data.txt' via a,b
plot 'data.txt' with points title 'data points', \
     f(x) with lines title sprintf('power fit curve f(x) = %.2f·x^{%.2f}', a, b)

你得到了合适的人选:

enter image description here