こんにちは、gnuplot を使用して、次のように、データ ブロックで構造化されたシミュレーションからデータをプロットしています。
CurrentTime CurrentState
0 2
1.234 2
1.990 1
2.462 0
CurrentTime CurrentState
0 2
0.895 1
1.456 2
2.052 1
3.017 0
データ ブロックの数は厳密にはわかっていませんが、少なくとも 30 ブロックです。CurrentTime ごとに間隔の数が異なることに注意してください。次のコードを使用して、データをそのままプロットしています
# GNUPlot code
set multiplot layout 2,1 title "Insert title" font ",14"
set tmargin 3
set bmargin 3
set lmargin 5
set rmargin 2
plot "data.txt" every :1 using 1:2:(column(-2)) with linespoints lc variable
次にプロットしたいものは、multiplot コマンドにより下のプロットに入ります。そのプロットは、設定した時間間隔でのデータの平均になりたいと考えています。私が欲しい疑似コードで:
# pseudo code
float start, step, stop;
assign start, step, stop;
define Interval=start, by step, to stop; typed another way Interval=start:step:stop
array sum(size(number of data blocks,length(Interval), length(Interval)))
assign sum=0;
for every data block
for k=0 to length(CurrentTime)
for j=0 to length(Interval)-1
(CurrentTime(k) < Interval(j+1) && CurrentTime(k) > Interval(j-1)) ? sum += CurrentState(k) : sum += 0
average=sum/(Number of data blocks)
gnuplotでそれを実装しようとして立ち往生しています。どんな支援も素晴らしいでしょう!