是终端影响的gnuplot吗?

时间:2014-08-21 11:17:52

标签: gnuplot

我有一个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。对于减少的数据文件,计算的拟合与测量的点不一致,但是与它们完成的数据一致。

1 个答案:

答案 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