Gnuplot:拟合不同的曲线

问题描述 投票:0回答:1

我正在尝试在gnuplot中容纳一些数据。数据是不同的曲线。我有三个.gnp文件:一个用于数学过程,一个用于调用要分析的文件,另一个必须在gnuplot中启动。

我得到的是这个错误,但我不知道如何解决。

gnuplot> load '0-one_fit.gnp'

gnuplot> id = $0
           ^

““ 0-one_fit.gnp”第5行:从无效上下文中调用column()

此文件应存储从0到变量ID的序列号。序列号通过命令调用从loop.gnp外部传递到此脚本。

文件说:

    id = $0
    filename = sprintf("FeCoBSiNbCu%04d.chi",id)
    fit [26:35.6] f110(x) filename u 1:2 via x110,A110,w110,a0,a1
    fit [42.3:45.1] f200(x) filename u 1:2 via x200,A200,w200,b0,b1
    fit [48:56.1] f23(x) filename u 1:2 via x2,A2,w2,x211,A211,w211,c0,c1


    entry1 = sprintf("%d\t%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",id,x110,x110_err,A110,A110_err,w110,w110_err)
    entry2 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",x200,x200_err,A200,A200_err,w200,w200_err)
    entry3 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",x2,x2_err,A2,A2_err,w2,w2_err)
    entry4 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f",x211,x211_err,A211,A211_err,w211,w211_err)
print entry1, entry2, entry3, entry4

更新:我用id=ARG1更改了文件,但现在它给了我另一个错误

gnuplot> call '0-one_fit.gnp' 0
     "0-one_fit.gnp" line 8: f_sprintf: attempt to print string value with numeric format
compiler-errors syntax-error gnuplot curve-fitting data-fitting
1个回答
0
投票

您可以在绘图命令或绘图命令中使用的功能内使用$0column(0)。在其他地方,我猜这是“无效的上下文”。检查以下示例:

也检查help usinghelp columnhelp pseudocolumns

reset session

$Data <<EOD
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
EOD

# id = $0            # does not work, invalid context
# id = column(0)     # does not work, invalid context
id(n) = column(n)    # within a function, works

plot $Data u           0:1 w lp    # works
plot $Data u        ($0):1 w lp    # works
plot $Data u (column(0)):1 w lp    # works
plot $Data u     (id(0)):1 w lp    # works

编辑:

我想,我误解了你的问题。我以为您想将列值分配给变量。

[如果要将参数传递给gnuplot例程,则可以call具有参数的gnuplot文件(而不是load)。

call '0-one_fit.gnp' 123

0-one_fit.gnp内,您可以通过id = ARG1访问此值。在较早的gnuplot版本(“旧式”)中,该值为id=$0

检查help callhelp call old-style(gnuplot 5.2)

© www.soinside.com 2019 - 2024. All rights reserved.