1

我正在尝试使用 logscale 在 gnuplot 中拟合一个情节。我有 50000 个数据点。起初我以这种方式适合情节。

 f(x) = b + m*x
 fit f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using 1:2  via m,b

我得到了斜率值。然后我尝试在不同的范围内获得斜率值,如下所示。

 fit [30000:50000] f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using 1:2  via m,b

上面的代码工作正常。在下一次尝试中,我尝试了,

 f(x) = b + m*x
 fit f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using (log($1)):(log($2)) via m,b

以上工作也很好。我得到斜率值。然后我尝试选择如下所示的 xrange。这是我有问题的地方。这没用。

 fit [500:5000] f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using (log($1)):(log($2)) via m,b

有什么办法可以做到这一点?感谢任何帮助

4

2 回答 2

2

该范围必须适合表达式,在您的情况下是日志值。因此,请确保日志值在范围内。例如,如果您的范围为($1):($2)[500:5000]那么对应的范围(log($1)):(log($2))应该类似于[2.69:3.69]

于 2013-04-23T09:05:16.457 回答
1

Gnuplot 首先在您的数据上使用表达式。限制范围是第二步,因此在这种情况下,所需数据点的对数必须在xrange.

并且不要忘记: logscale使用基于 10 的对数,但log(x)orlog($1)表示基于“e”的对数(约 2.7183)。与logscale使用函数log10(x)(或log(x)/log(10))调和。

PS:我知道原来的问题之前已经回答过了,但是我没有足够的声望来附加我关于该log()功能的有用评论作为评论。

于 2016-04-19T06:29:37.337 回答