4

イントロ

gnuplotには、いいねという名前のファイルからヒストグラムを作成するソリューションがありhist.datます

1
2
2
2
3

コマンドを使用して

binwidth=1
set boxwidth binwidth
bin(x,width)=width*floor(x/width) + binwidth/2.0
plot [0:5][0:*] "hist.dat" u (bin($1,binwidth)):(1.0) smooth freq with boxes

これは、他のSOページからこのようなヒストグラムを生成します。

質問

関数をこのヒストグラムに合わせるにはどうすればよいですか?ガウス関数を定義し、その値を次のように初期化しました。

f(x) = a*exp(-((x-m)/s)**2)
a=3; m=2.5; s=1

出力では、関数はヒストグラムによく従っています。

残念ながら、コマンドを使用してこのヒストグラムに適合させることはできません

fit f(x) "hist.dat" u (bin($1,binwidth)):(1.0) smooth freq via a,m,s  
                                                      ^
         Need via and either parameter list or file

では、ビン化された値を含む新しいファイルを作成せずに、関数をどのように適合させることができますか?

4

2 に答える 2

4

私は同様の問題に直面していて、ある種のあまりエレガントではない解決策を見つけました。

binwidth=1
set boxwidth binwidth
bin(x,width)=width*floor(x/width) + binwidth/2.0
set table 'hist.temp'
plot [0:5][0:*] "hist.dat" u (bin($1,binwidth)):(1.0) smooth freq with boxes
unset table

そして、あなたはあなたが好きなようにファイルのフィットをすることができます。おそらくこれを行うためのより良い方法があることを私は知っていますが、私にとってはそれは速くて実用的な解決策です。これがお役に立てば幸いです。

乾杯!

于 2013-03-14T10:38:53.293 に答える