我有一个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
如何受到其他命令的影响?还是这是某种bug?
edit:上传了一个脚本和数据文件的精简版本到这里。对于简化的数据文件,计算的拟合与测量点不一致,但与完整的数据一致。
我不确定,真正的错误是什么,但它似乎与您使用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
命令,它可以正常工作。我将把它作为bug报告。
在你发布的脚本中,我也能够通过使用using 9:8
而不是using "PHEAT":"RHOT"
来修复这个问题。此外,您必须删除数据文件的第一行,这可以使用tail
实时完成,这样您就可以保持plot
的using
语句不变。所以你可以使用:
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