sum a*exp(-0.001*(x-b)**2)
以下のように、入力ファイルの最初の列と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つずつ書き込むのではなく、すべてのデータをプロットする短いコマンドです。
予想される出力は、次の連続線でなければなりません。
ベストアンサー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を実行します。 awk はデータファイルから読み込み、次の文字列を生成します。
f(1,2,x)+f(3,4,x)+...0
ここで、1,2 3,4 はデータの最初の 2 つの値のセットです。 gnuplotカスタム関数はsum()
これに設定されてプロットできます。