使用gnuplot使用多个数据集拟合函数

使用gnuplot使用多个数据集拟合函数,gnuplot,curve-fitting,multiple-databases,Gnuplot,Curve Fitting,Multiple Databases,我想使用许多数据集来拟合函数。例如,我多次重现一次体验,每次我获得一对数据列(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.

我想使用许多数据集来拟合函数。例如,我多次重现一次体验,每次我获得一对数据列(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

您可以处理数据,使第1列、第3列和第5列都成为相同的第1列,第2列、第4列和第6列都成为相同的第2列。使用
awk
很容易,您可以在
gnuplot
之外进行:

awk '{print $1, $2} {print $3, $4} {print $5, $6}' data.txt > data2.txt
f(x)=a*x+b
fit f(x) "data2.txt" u 1:2:(0.25) via a,b
然后将其装入
gnuplot

awk '{print $1, $2} {print $3, $4} {print $5, $6}' data.txt > data2.txt
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
f(x)=a*x+b
fit f(x)“
您希望每个数据集适合不同的拟合参数集(例如,具有不同系数的多项式),还是希望在所有数据集之间共享一组拟合参数?作为优化,我想做的是第二个选择:在所有数据集之间共享一组拟合参数