2017-02-20 75 views
0

我寫了一個程序,用於生成N個增量爲I〜N(0,dt)的布朗運動軌跡。我正在測試它們的條件W(1)> = 1 & & W(2)> = 2。作爲輸出,我當然會將時間點數據保存在文件「Wiener_data.dat」中。現在滿足條件1的點保存在「Wiener_data_pts1.dat」中,條件2保存在「Wiener_data_pts2.dat」中。我將一個單獨的文件「Wiener_data_index.dat」保存滿足兩個條件的軌跡的索引。GnuPlot數據的變量列索引

# total number of trajectories satisfying conditions 1 and 2 
12 
# indices 
143 146 173 281 354 496 503 610 613 755 761 965 

我想要做的是:情節GNUPLOT的軌跡是這樣的: N=1000 Trajectories

所以我手動

plot for [i=1:1000] 'Wiener_data.dat' using 1:i+1 with linespoints ls 3 , 
for [i=143:143] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=146:146] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=173:173] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=281:281] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=354:354] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=496:496] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4, 
for [i=503:503] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=610:610] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=613:613] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=755:755] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=761:761] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
for [i=965:965] 'Wiener_data.dat' using 1:i+2 with linespoints ls 4 , 
Wiener_data_pts1.dat' using 1:2 with points ls 2 , 'Wiener_data_pts2.dat' 
using 1:2 with points ls 5 

這將,當然,是相當乏味做到了大量的軌跡。

因此,考慮到「Wiener_data_index.dat」的索引,我想繪製不同顏色的特定軌跡。有什麼辦法可以做到嗎?也許通過將索引數據文件保存到數組中,然後在迭代索引時訪問它的值?

回答

0

我認爲比如像這應該工作:

indices = system("gawk 'NR==4' Wiener_data_index.dat") 
plot for [idx in indices] 'Wiener_data.dat' using 1:(column(idx+2)) w l t sprintf("index %s", idx)