Gnuplot

如何使用 gnuplot 繪製求和函式?

  • November 10, 2017

我想繪製以下函式 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

我需要的是一個簡短的命令來繪製所有數據,而無需一一寫入所有數據。

預期的輸出應該是這樣的一條連續線

預期的輸出應該是這樣的一條連續線

最簡單的可能是使用 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 是數據中的前兩組值。gnuplot 使用者自定義函式sum()設置為這個,你可以繪製它。

在此處輸入圖像描述

引用自:https://unix.stackexchange.com/questions/403611