2011-07-06 19 views
10

En gnuplot, ¿hay alguna manera de imprimir automáticamente los parámetros de ajuste en la figura generada? Por ejemplo, si encajo la tabla de datosgnuplot- parámetros de ajuste de impresión automáticamente

1 1 
2 2 
3 3 

usando:

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

voy el resultado a=1 y b=0. Quiero imprimir usando algo así como

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

El $ truco no funciona, así que esperaba que me pudiera dar algunos consejos ...

Respuesta

10

Lo que estamos tratando de hacer es muy posible. El problema que está explicando es que su algoritmo de ajuste se bloquea debido a una inversión de matriz singular. Puedes resolver ese problema de varias maneras. Lo más fácil es limitar la cantidad de iteración para encontrar la curva de ajuste. Así que este script:

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 

debe hacer exactamente lo que usted está buscando.

Tenga en cuenta que el problema de inversión de matriz singular no debería surgir cuando sus datos son ruidosos o su función de configuración no tiene la estructura exacta de sus datos. Por ejemplo, este

f(x) = a*x**2 + b 

funciona bien, sin limitar el número de iteraciones.

Otras formas de controlar el proceso de adaptación se describen en la documentación de gnuplot (gnuplot.pdf o help set fit).

0

He encontrado algo muy interesante que puede resolver su problema here. La solución parece estar utilizando la función sprintf y la sintaxis habitual de C para imprimir en una cadena. I. E., como en el enlace:

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" 
Cuestiones relacionadas