2014-10-30 61 views
1

我的最後一個問題也回答了(謝謝@ Christoph!),我還有另一個問題。Gnuplot:減去多個數據文件的偏移

我有多個數據文件,我想繪製,但在每個文件我想在0

我有下面的代碼在第2列的第一個值,以便每個數據文件開始。減去:

file = 'file_1 file_2 file_3 ... filen' 

intime(COL) = strptime("%H:%M:%S",strcol(COL)) 

do for [i=1:words(file)] { 
     stats word(file,i) using (intime(2)):3 nooutput 
     timemin(i) = STATS_min_x 
} 

plot for [i=1:words(file)] word(file,i) u (intime(2)-timemin(i)):3 notitle 

問題是變量timemin(i)只包含最後一個文件的值。

有誰知道我可以如何將file_1的所有不同值保存到file_n?

感謝您的幫助!

回答

1

您可以構造一個包含所有計算極小的字符串:

file = 'file_1 file_2 file_3 ... filen' 
timemin = '' 
intime(COL) = strptime("%H:%M:%S",strcol(COL)) 

do for [i=1:words(file)] { 
     stats word(file,i) using (intime(2)):3 nooutput 
     timemin = sprintf("%s %e", timemin, STATS_min_x) 
} 

plot for [i=1:words(file)] word(file,i) u (intime(2)-word(timemin, i)):3 notitle 

既然要減去第一個值,你也可以使用另一種方法不stats

file = 'file_1 file_2 file_3 ... filen' 
intime(COL) = strptime("%H:%M:%S",strcol(COL)) 

ofs = 0 
plot for [f in file] f using (ofs = ($0 == 0 ? intime(2) : ofs), intime(2) - ofs):3 notitle 

這將變量設置爲每個數據文件中第2列的第一個值($0包含行號)。請注意,您可以使用in迭代單詞列表。

+0

再次感謝!我試過這個,但是出現這個錯誤:'f_sprintf:試圖用字符串格式打印數字值。所以我將'%s%e'改爲'%f'。在for循環之外,只存儲'timemin'的最後一個值。所以我有和bevore一樣的問題。 – Froop 2014-10-30 10:12:57

+0

我糾正了sprintf調用。 – Christoph 2014-10-30 10:34:28

+0

是的,知道它是完美的!非常感謝! – Froop 2014-10-30 10:38:03