Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2003
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2003

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: finding periodicity in a set

  • To: mathgroup at smc.vnet.net
  • Subject: [mg39283] Re: finding periodicity in a set
  • From: Scott A Centoni <scentoni at stanford.edu>
  • Date: Sun, 9 Feb 2003 04:50:32 -0500 (EST)
  • References: <b1t5bj$90v$1@smc.vnet.net> <b1votq$pk5$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

The following response from Mihajlo Vanevic has solved my problem, and I 
thought it would be helpful to others as well:

 >Ok, now I get it... ;o)
 >
 >But if you know that your error is, say, less than 0.01,
 >try this dirty (but rather fast) approach:
 >
 >In[]:=
 >xlist = 0.202 + 1.618 Table[0.001 Random[] + Random[Integer, {3, 17}], 
{100}];
 >
 >In[]:=
 >error = 0.01;
 >
 >In[]:=
 >xxlist = First /@ Split[Sort[xlist], #2 - #1 < error &];
 >
 >In[]:=
 >Fit[xxlist, {1, x, x^2}, x]
 >
 >Regards,				
 >         Mihajlo Vanevic
 >         mvane at EUnet.yu
 >         2003-02-07
 >
 >**************************************************************
 >*    At 2003-02-07, 03:07:00
 >*        Scott A Centoni, scentoni at stanford.edu  wrote:
 >**************************************************************
 >
 >>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
 >
 >**************************************************************
 >
 >
 >
 >
 >


  • Prev by Date: Re: triangles
  • Next by Date: Simplify[Abs[x],x<0]]
  • Previous by thread: Re: finding periodicity in a set
  • Next by thread: Re: Re: finding periodicity in a set