我有一个gnuplot脚本文件来使用这种结构拟合测量数据:
set terminal png
...some format templates...
f(x) = a + b*x + c*x**2
fit f(x) "datafile.txt" using "X":"Y" via a, b, c
...some plotting commands etc...
有了这个,gnuplot显示了一些奇怪的行为:
当我按原样运行脚本时,它给出了以下错误:
Undefined value during function evaluation
"myscriptfile.gnuplot", line 5: error during fit
当我在set terminal png
行之后移动fit
行时,它会毫无困难地运行。
通常,我在包含格式模板和其他数据处理例程的主脚本的开头加载它。即使使用移动的set terminal
命令,这样做也会给出上述错误消息。
因为这只是处理我的数据的第一部分,我真的需要它从主脚本工作...我已经尝试设置初始猜测,FIT_LIMIT并从gnuplot环境加载它。我正在使用gnuplot 4.6.5。
有谁知道如何解决这个问题或fit
如何受到其他命令的影响?或者这是某种错误?
编辑将精简版的脚本和数据文件上传到here。对于减少的数据文件,计算的拟合与测量的点不一致,但是与它们完成的数据一致。
答案 0 :(得分:1)
我不确定,真正的错误是什么,但它似乎与您使用using "PHEAT":"RHOT"
有关,虽然这应该没问题。
我可以使用以下最小设置重现您的错误:
数据文件test.dat
:
A B
1 2
2 3
3 4
和文件test.gp
:
f(x) = a*x**2 + b*x + c
fit f(x) 'test.dat' using "A":"B" via a,b,c
如果我用gnuplot test.gp
调用此文件,我会收到与您相同的错误。如果我使用using 1:2
,它就不会出现。如果我将代码粘贴到交互式终端中,则错误也会出现,但只会出现一次。如果我再次只重复fit
命令,它可以正常工作。我将此报告为错误。
在您发布的脚本中,我还可以使用using 9:8
代替using "PHEAT":"RHOT"
来解决此问题。此外,您必须删除数据文件的第一行,这可以使用tail
即时完成,这样您就可以保持using
plot
语句不变。所以你可以使用:
fit rhotside(x) "< tail -n +2 testdata.txt" using 9:8 via rhot0, rhot1, rhot2
fit rcoldside(x) "< tail -n +2 testdata2.txt" using 9:8 via rcold0, rcold1, rcold2