2016-12-07 2 views
0

Ich habe diese beiden Datenblöcke in der gleichen Datei. Beide stellen eine Reihe von Messungen dar, die ich anpassen möchte, indem ich ein einzelnes Skript zum Vergleich verwende. Ich weiß, dass es einfacher wäre, in zwei Dateien zu trennen, und dann passt jeder einzeln, aber ich habe mehr als zwei Blöcke und es wäre langweilig. Jemand weiß wie soll ich es machen?Fit mehr als einen Datenblock aus der gleichen Datei

Ich habe versucht, zu verwenden:

f(x) = a*x^b 
f1(x) = a1*x^b1 
fit f(x) "temp.dat" i 0 u 1:2:4 via a,b, f1(x) "temp.dat" i 1 u 1:2:4 via a1,b1 

p f(x), "temp.dat" i 0 u 1:2:4 w yer, f1(x), "temp.dat" i 1 u 1:2:4 

Thks

1 100 2.13048e-09 0.2 2.4178e-11 
2 140 1.51668e-09 0.2 1.69698e-11 
3 180 1.18001e-09 0.2 1.35081e-11 
4 
5 100 1.41599e-09 0.3 1.62087e-11 
6 140 1.02526e-09 0.3 1.16511e-11 
7 180 8.1794e-10 0.3 9.50745e-12 
+0

Hoppla, Sie haben vergessen, den Code und die erforderliche Ausgabe zu veröffentlichen. StackOverflow hilft Leuten, ihren Code zu reparieren. Es ist kein kostenloser Kodierungsdienst. Jeder Code ist besser als gar kein Code. Viel Glück. – shellter

Antwort

0

Beachten Sie, dass durch zwei Leerzeilen getrennt werden, um Dateiblöcke Ihre Daten sollten die index Option zu verwenden. Andernfalls müssen Sie nur eine Leerzeile verwenden: every.

Das heißt, was Sie mit eval und eine do for Schleife getan erreichen wollen werden können:

do for [i=0:1] { 
eval sprintf("f%i(x) = a%i + b%i * x", i, i, i) 
eval sprintf("fit f%i(x) 'temp.dat' i %i via a%i, b%i", i, i, i, i) 
} 

plot "temp.dat" i 0, f0(x), "temp.dat" i 1, f1(x) 

enter image description here

Verwandte Themen