2013-03-20 28 views
0

我在一個文件中有2個系列,我希望延遲一個,這樣我可以做一個散點圖?gnuplot - 我怎麼能滯後一系列?

最好,我想這樣做的功能,如:

f(x,y) = x*(y-previous(y)) 

有沒有辦法做到這一點?

甚至

plot "mydata.txt" u 3:(lagged($3)) 

將有助於

Welcome to the XWin X Server 
Vendor: The Cygwin/X Project 
Release: 1.13.3.0 
OS: CYGWIN_NT-6.1-WOW64 LskyHome2 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 
OS: Windows 7 Service Pack 1 [Windows NT 6.1 build 7601] (WoW64) 
Package: version 1.13.3-1 built 2013-03-09 

回答

0

您可以定義一個函數:

lag(x) = ($0 == 0) ? (val1 = x, 0) : (val2 = val1, val1 = x, val1-val2) 

這將返回每一點和之前的之間的差異,並返回0如果它是第一個數據點。 $0是行號僞列;如果函數是從plot命令中調用的,函數可以看到來自數據文件的列。

您可以使用它像

plot 'mydata.txt' u 3:(lag($3)) 
+0

我得到這個錯誤:gnuplot的>滯後(X)=($ 0 == 0)? (val1 = x,0):(val2 = val1,val1 = x,val1-val2) ^ ')'expected – ManInMoon 2013-03-20 17:27:04

+0

嗯。我沒有遇到運行該命令的錯誤。你是否定義了函數或使用它的錯誤?你正在使用哪個版本的gnuplot /平臺? – andyras 2013-03-21 02:08:00

+0

我將系統信息添加到問題 – ManInMoon 2013-03-21 08:42:41