gnuplotを使用して合計関数を描画するには?

gnuplotを使用して合計関数を描画するには?

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()これに設定されてプロットできます。

ここに画像の説明を入力してください。

おすすめ記事