установка функции с несколькими наборами данных с помощью gnuplot

Я хотел бы подогнать функцию, используя множество наборов данных. Например, я много раз воспроизводил опыт, каждый раз получая пару столбцов данных (x, y). Я поместил все эти столбцы в файл с именем data.txt:

первый опыт: x = столбец 1, y = столбец 2

второй опыт: x = столбец 3, y = столбец 4

третий опыт: x = столбец 5, y = столбец 6

...

Теперь я хочу подобрать функцию y = f(x) для этих наборов данных. Я не знаю, может ли Gnuplot это сделать? Если возможно, не могли бы вы помочь мне исправить следующую команду? Этот не работает.

fit f(x) "data.txt" u 1:2:(0.25), "data.txt" u 3:4:(0.25), "data.txt" u 5:6:(0.25) via a, b

person user3515154    schedule 10.05.2014    source источник
comment
Вы хотите, чтобы каждый набор данных соответствовал разным наборам параметров соответствия (например, полиномам с разными коэффициентами) или вам нужен общий набор параметров соответствия для всех наборов данных?   -  person andyras    schedule 11.05.2014
comment
То, что я хочу сделать в качестве оптимизации, — это второй вариант: общий набор параметров соответствия для всех наборов данных.   -  person user3515154    schedule 11.05.2014


Ответы (1)


Вы можете обработать свои данные так, чтобы все столбцы 1, 3 и 5 стали одним и тем же столбцом 1, а все столбцы 2, 4 и 6 стали одним и тем же столбцом 2. Это легко с awk, вы можете сделать это вне gnuplot:

awk '{print $1, $2} {print $3, $4} {print $5, $6}' data.txt > data2.txt

а затем поместите его в gnuplot:

f(x)=a*x+b
fit f(x) "data2.txt" u 1:2:(0.25) via a,b

Или вы можете сделать это полностью внутри gnuplot без какого-либо промежуточного файла:

f(x)=a*x+b
fit f(x) "< awk '{print $1, $2} {print $3, $4} {print $5, $6}' data.txt" u 1:2:(0.25) via a,b
person Miguel    schedule 11.05.2014