【问题标题】:gnuplot- printing fit parameters automaticallygnuplot - 自动打印拟合参数
【发布时间】:2011-07-06 07:48:20
【问题描述】:

在 gnuplot 中,有没有办法在生成的图形上自动打印拟合参数?例如,如果我适合数据表

1   1
2   2
3   3

使用:

a=1
b=1
f(x) = a*x + b
fit f(x) 'data' using 1:2 via a, b

我将得到a=1b=0 的结果。我想使用类似的东西打印它们

set label 'a=$a, b=$b' at (1,1)
show label

$ 技巧不起作用,所以我希望你能给我一些提示......

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    您正在尝试做的事情很有可能。您遇到的问题是,您的拟合算法由于奇异矩阵求逆而崩溃。您可以通过多种方式解决该问题。最简单的方法是限制迭代量以找到拟合曲线。所以这个脚本:

    a=1
    b=1
    FIT_MAXITER = 1
    f(x) = a*x + b
    ti = sprintf("%.2fx+%.2f", a, b)
    fit f(x) 'data' using 1:2 via a, b
    plot [0:3] f(x) t ti, "data" w l
    

    应该完全按照你的目标去做。

    请注意,当您的数据有噪声或您的设置函数与数据的结构不完全相同时,不应出现奇异矩阵求逆问题。比如这个

    f(x) = a*x**2 + b
    

    函数应该可以正常工作而不会限制迭代次数。

    在 gnuplot 文档(gnuplot.pdf 或 help set fit)中描述了控制拟合过程的更多方法。

    【讨论】:

      【解决方案2】:

      我发现了一些非常有趣的东西可以解决您的问题here。 解决方案似乎是使用函数 sprintf 和 C 的常用语法在字符串上打印。 I.E.,如链接中所示:

      f(x) = m*x + c
      fit f(x) "file" using 3:1 via m,c
      set label 1 sprintf("m = %3.4f",m) at 510,75 font ",18"
      set label 2 sprintf("c = %3.4f",c) at 510,70 font ",18"
      

      【讨论】:

        猜你喜欢
        • 2016-08-09
        • 2015-09-01
        • 1970-01-01
        • 2020-07-08
        • 1970-01-01
        • 1970-01-01
        • 2022-06-20
        • 1970-01-01
        • 2016-03-22
        相关资源
        最近更新 更多