2011-07-06 20 views
10

Czy w gnuplotie można automatycznie wydrukować parametry dopasowania na wygenerowanej figurze? Na przykład, jeśli pasuje do tabeli danychgnuplot - drukowanie parametrów dopasowania automatycznie

1 1 
2 2 
3 3 

używając:

a=1 
b=1 
f(x) = a*x + b 
fit f(x) 'data' using 1:2 via a, b 

będziesz wynikiem a=1 i b=0 ja. Chcę je wydrukować przy użyciu coś jak

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

dolarów trik nie działa więc miałem nadzieję, możesz dać mi kilka wskazówek ...

Odpowiedz

10

Co próbujesz zrobić, to bardzo możliwe. Problemem, który napotykasz, jest to, że twój algorytm dopasowania ulega awarii z powodu pojedynczej inwersji macierzy. Możesz rozwiązać ten problem na kilka sposobów. Najłatwiej jest ograniczyć liczbę iteracji, aby znaleźć krzywą dopasowania. Ten skrypt:

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 

powinien zrobić dokładnie to, na co masz ochotę.

Należy pamiętać, że pojedyncza inwersja matrycy nie powinna występować, gdy dane są zakłócone lub funkcja konfiguracji nie ma dokładnej struktury danych. Na przykład ta funkcja powinna działać poprawnie bez ograniczania liczby iteracji.

Dalsze sposoby sterowania procesem dopasowania opisane są w dokumentacji gnuplot (gnuplot.pdf lub help set fit).

0

Znalazłem coś bardzo interesującego, co może rozwiązać Twój problem here. Rozwiązanie wydaje się być przy użyciu funkcji sprintf i zwykłej składni C, aby wydrukować na ciąg. I. E., jak w linku:

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"