Re: finding periodicity in a set

*To*: mathgroup at smc.vnet.net*Subject*: [mg39274] Re: finding periodicity in a set*From*: Scott A Centoni <scentoni at stanford.edu>*Date*: Fri, 7 Feb 2003 03:07:57 -0500 (EST)*References*: <b1t5bj$90v$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Thanks for the responses! (Particularly from Matt Flax.) I see now that my sample fake data set is misleading, I should have specified it as xlist = 0.202 + 1.618 Table[0.001 Random[] + Random[Integer,{3,17}],{100}] to make it crystal clear that no correlation between successive items in the list is implied and that the order is completely irrelevant. Scott A Centoni wrote: > > I have a list of coordinates where I want to find the period and offset > (modulo the period). To illustrate, let's create the fake data set > > xlist = 0.202+1.618(0.001 Random[ ] + Range[3, 17]) > > I want a function that will return > > periodicity[xlist] > > {1.618,0.202} > > _pace_ an error in the third decimal place. Note that the order of the > data in the list is irrelevant; it's to be considered a set, not a vector. > > My first thought is to turn this into a sum of delta functions > > xfunc = Plus@@(DiracDelta[x-#]&/@xlist) > > and then Fourier transform this > > kfunc = FourierTransform[xfunc,x,k] > > and find the first nontrivial peak. Does someone have a better way? Or > if not, what's the "best" way of locating the peak? > > Thanks, > Scott