1

为了调试一个小 gnuplot 脚本,我想在用户定义的函数中插入一个printf,以便我可以跟踪它接收和返回的值。

有没有办法做到这一点?

例如,此函数在某些情况下返回 NaN(例如,当 n=100 时):

eps_rf_i(n, i) = binom(n,i) * eps**i * (1-eps)**(n-i)
eps_rf(n) = sum[i=n/2 : n] eps_rf_i(n,i)

我试图在函数eps_rf_i中插入一个 printf,如下所示:

eps_rf_i(n, i) = ( print binom(n,i) * eps**i * (1-eps)**(n-i),  binom(n,i) * eps**i * (1-eps)**(n-i) )
eps_rf(n) = sum[i=n/2 : n] eps_rf_i(n,i)

但是 gnuplot 在打印后立即报告错误:

gnuplot> eps_rf_i(n, i) = ( print binom(n,i) * eps**i * (1-eps)**(n-i),  binom(n,i) * eps**i * (1-eps)**(n-i) )
                                  ^
"error_rate.plt", line 11: ')' expected

有没有其他方法可以调试eps_rf

所有提示和见解都将受到高度赞赏。

4

1 回答 1

0

由于未定义某些功能,我无法测试您的脚本不起作用。

您不能在用户定义的函数中使用打印命令。但是您可以附加要打印的值。

value=""
eps_rf_i(n, i) = (value=value.sprintf("%f\n",binom(n,i) * eps**i * (1-eps)**(n-i)),  binom(n,i) * eps**i * (1-eps)**(n-i) )
eps_rf(n) = sum[i=n/2 : n] eps_rf_i(n,i)

结果->

print eps_rf(10)

您可以检查跟踪值

print value

谢谢,

于 2017-08-10T06:20:42.647 回答