0

I wrote a program that generates N trajectories of Brownian motion with increments I~N(0,dt). I'm testing them for a condition W(1)>=1 && W(2)>=2. As an output I'm, of course, saving the time-point data in a file "Wiener_data.dat". Now points that satisfy condition 1 are saved in "Wiener_data_pts1.dat" and for condition 2 in "Wiener_data_pts2.dat". I'm saving the indices of the trajectories that satisfy both conditions in a separate file "Wiener_data_index.dat".

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

What I want to do is: plot the trajectories in GnuPlot like this: N=1000 Trajectories

so I did it manually

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

Which would, of course, be quite tedious for a large number of trajectories.

So given the indices from "Wiener_data_index.dat" I want to plot the specific trajectories in a different color. Is there any way I could do that? Perhaps by saving the index data file into an array and then accessing its values when iterating an index?

Martin
  • 141
  • 1
  • 11

1 Answers1

0

I think that for example something like this should work:

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)
ewcz
  • 12,819
  • 1
  • 25
  • 47