是否有任何简便的方法可以绘制以下 exp 函数的总和?
plot f1*exp(-0.001*(x-L1)^2) + f2*exp(-0.001*(x-L2)^2) + etc
在哪里F和大号值按列排序1&2在文件中数据文件, 分别。
答案1
因此i
文件的行包含f_i L_i
?您可以使用调用函数来执行此操作:
sumval=0
add(x)=(sumval=sumval+x)
plot "file.dat" using 0:(add($1*exp(-0.001*(x-$2)**2)))
(此处的横坐标将以行号、伪列表示$0
)此处x
假定在发出例如x=...
命令之前已固定。
但是我猜您想要的是针对任意x
值绘制求和结果?
然后,您需要进行大量这样的求和,并仅绘制每个求和的最后一个点x
。
N_samples=100 # number of points to plot
Xmin=0
Xmax=1.
x(ix)=Xmin+(Xmax-Xmin+0.)*ix/N_samples
stats "data.dat"
N=STATS_records
sumval=0
currec=0
finished(v)=(sumval=0,currec=0,v) #reinitialise the counters
add(y)=(currec=currec+1,sumval=sumval+y,(currec==N)?finished(sumval):1/0)
plot [Xmin:Xmax] for [ix=0:N_samples] "file.dat" using (x(ix)):(add($1*exp(-0.001*(x(ix)-$2)**2)))
除非您先将绘图重定向到表格并绘制该表格,否则您将无法用线连接点。