2011-07-06 9 views
10

gnuplotでは、生成された図形に自動的に適合パラメータを印刷する方法はありますか?私が使用してデータテーブル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よ。私は何をしようとする

答えて

10

は非常によく可能です... $トリックは、私はあなたが私にいくつかのヒントを与えることができる望んだ動作しません

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

のようなものを使用してそれらを印刷したいです。あなたが遭遇している問題は、特異行列反転のためにフィッティングアルゴリズムがクラッシュすることです。この問題はいくつかの方法で解決できます。最も簡単なのは、フィッティングカーブを見つけるために反復の量を制限することです。したがって、このスクリプト:

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)を参照してください。

0

あなたの問題を解決する可能性のある非常に興味深いものが見つかりました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" 
関連する問題