Gnuplot - 通过插值在另一个横坐标上绘制数据

时间:2016-05-25 17:21:28

标签: gnuplot interpolation

晚上好,

我遇到了Gnuplot的问题。我试图总结我的问题,以使理解更容易。

我有什么: 2组数据,第一组是我的实验数据,大约20分,第二组是我的数值数据,大约300分。但这两组没有相同的横坐标。

我想要的是什么:我希望我的数值数据在x-实验横坐标上进行插值。 我知道有可能用Xmgrace(http://plasma-gate.weizmann.ac.il/Xmgr/doc/trans.html#interp处的插值段落)但是用Gnuplot吗?

我想要的还有:那么,是否有可能在x-实验横坐标点上减去y数值数据的y-实验数据呢?

提前感谢您的回答,

zackalucard

2 个答案:

答案 0 :(得分:0)

你可以使用平滑,这应该可以解决问题

plot "DATA" smooth csplines

csplines只是一个选项,其他选项,例如bezier

但我认为你不能自动确定平滑曲线的交点。您可以使用鼠标直观地确定交点,或者将一些函数f(x)和g(x)拟合到曲线中并分析求解f(x)= g(x)

答案 1 :(得分:0)

您不能将一组的纵坐标值插值到另一组的横坐标值。 gnuplot没有相应的机制。

然而,您可以使用其中一种平滑算法(检查“帮助平滑”)绘制两个数据集,并使用常见的横坐标值(可能(可以)与一组的原始值一致。)

set table "data1.tmp"
plot dataf1 smooth cspline
set xrange [GPVAL_x_min:GPVAL_X_max] # fix xrange settings
set table "data2.tmp"
plot dataf2 smooth cspline
unset table

现在您将插值数据放在两个临时文件中,只需将它们合并为一个:

system("paste data1.tmp data2.tmp > correlation.dat") # unixoid "paste" command
plot "correlation.dat" using 2:4

(如果您对两个数据集都有合理的fit函数,那么整个事情就变得容易了:plot dataf1 using (fit1($1)):(fit2($1))