2013-03-20 59 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