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 は最初にデータに対して式を使用します。範囲の制限は 2 番目のステップであるため、この場合、必要なデータ ポイントの対数はxrange.

AND 忘れないでください: logscale 10 に基づく対数を使用しますが、log(x)またはlog($1)'e' (約 2.7183) に基づく対数を意味します。logscale使用機能log10(x)(または)と調和することlog(x)/log(10)

PS: 元の質問が以前に回答されたことは知っていますが、log()関数に関する有用なコメントをコメントとして追加するほどの名声はありません。

于 2016-04-19T06:29:37.337 に答える