如何使用 gnuplot 绘制求和函数?

如何使用 gnuplot 绘制求和函数?

我想绘制以下函数 sum a*exp(-0.001*(x-b)**2) ,其中 a 和 b 值分别列在输入文件的第一列和第二列中,如下所示

a1 b1
a2 b2
a3 b3

.....
an bn

现在我使用以下命令绘制它

plot a1*exp(-0.001*(x-b1)**2) + a2*exp(-0.001*(x-b2)**2) + a1*exp(-0.001*(x-b3)**2) ...etc

我需要的是一个简短的命令来绘制所有数据,而不需要一一写入所有数据。

预期输出应该是这样的一条连续线

预期输出应该是这样的一条连续线

答案1

最简单的可能是使用 awk 生成所需的绘图命令。例如,

f(a,b,x)=a*exp(-0.001*(x-b)**2)
sum(x) = `awk <data '{v = v sprintf("f(%s,%s,x)+",$1,$2)} END{print v "0"}'`
set xrange [250:650]
plot sum(x)

这使用 gnuplot 命令文件中的反引号来运行 awk,它从数据文件中读取并生成一个字符串,如下所示:

f(1,2,x)+f(3,4,x)+...0

其中 1,2 3,4 是数据中的前 2 组值。 gnuplot 用户定义函数sum()设置为此,您可以绘制它。

在此输入图像描述

答案2

如果我理解正确的话,你正在寻找类似的东西:

gnuplot5.0:

gnuplot> set title "sum columns"
gnuplot> set size square
gnuplot> plot 'inputfile' u 1:($1*exp(-0.001*(x-$2)**2)) w linespoints

输出: 在此输入图像描述

相关内容