使用列的对数适合 gnuplot

Fit in gnuplot using the logarithm of a column

我在拟合数据集来计算温度计的响应时间时遇到了一些问题。所以我的数据集形式为

Time (s) - Temperature (K)
0.4820 295.0772
0.4840 295.0772
0.4860 295.1651
0.4880 295.1651
0.4900 295.1651
0.4920 295.2531
0.4940 295.2091
0.4960 295.2531
0.4980 295.2972
0.5000 295.3412
0.5020 295.2972
0.5040 295.3853
0.5060 295.3412

并且我想通过操作

仅对第二列进行线性化
y = log( - 325.6)

所以我用这种方式写了我的 .gp 文件

f(x) = a*x+b
fit f(x) 'termom_COST_SCALED.txt' via a, b u 1:(log( - 325.6))

p 'termom_COST_SCALED.txt' u 1:(log( - 325.6)) title 'T(t)', 
f(x) title "Linear fit" 

但不知何故不起作用,即使我绘制了没有拟合的图表

p 'termom_COST_SCALED.txt' u 1:(log( - 325.6)) 

结果是我想要的图形,我想从中进行拟合。 fit的语法是不是错了?

via a, b u 1:(log( - 325.6))

谢谢!

我认为 using 应该在 via 之前,您应该忽略数据文件中的 header every ::1:

f(x) = a*x+b
fit f(x) 'termom_COST_SCALED.txt' u 1:(log( - 325.6)) every ::1 via a,b

p 'termom_COST_SCALED.txt' u 1:(log( - 325.6)) every ::1 title 'T(t)',\
  f(x) title "Linear fit"
pause mouse

语法现在正确了。

您的第 2 列接近 295,这意味着 -325.6 接近 -31,其日志将很复杂:

gnuplot> print log(-31)
{3.43398720448515, 3.14159265358979}

真的是你想要的吗?