algorithm - Frequency determination from sparsely sampled data -


i'm observing sinusoidally-varying source, i.e. f(x) = sin (bx + d) + c, , want determine amplitude a, offset c , period/frequency b - shift d unimportant. measurements sparse, each source measured typically between 6 , 12 times, , observations @ (effectively) random times, intervals between observations between quarter , ten times period (just stress, spacing of observations not constant each source). in each source offset c typically quite large compared measurement error, while amplitudes vary - @ 1 extreme on order of measurement error, while @ other extreme twenty times error. outlines problem, if not, please ask , i'll clarify.

thinking naively problem, average of measurements estimate of offset c, while half range between minimum , maximum value of measured f(x) reasonable estimate of amplitude, number of measurements increase prospects of having observed maximum offset mean improve. however, if amplitude small seems me there little chance of accurately determining b, while prospects should better large-amplitude sources if observed minimum number of times.

anyway, wrote code least-squares fit data range of periods, , identifies best-fit values of a, b , d quite larger-amplitude sources. however, see finding number of possible periods, , while 1 'best' (in as gives minimum error-weighted residual) in majority of cases difference in residuals different candidate periods not large. quantify possibility derived period 'false positive' (or, put differently, confidence can have derived period correct).

does have suggestions on how best proceed? 1 thought had use monte-carlo algorithm construct large number of sources known values a, b , c, construct samples correspond measurement times, fit resultant sample fitting code, , see percentage of time recover correct period. seems quite heavyweight, , i'm not sure it's particularly useful other giving general feel false-positive rate.

and advice frameworks might help? have feeling can done in line or 2 in mathematica, (a) don't know it, (b) don't have access it. i'm fluent in java, competent in idl , can figure out other things...

this looks tailor-made working in frequency domain. apply fourier transform , identify frequency based on power located, should clear sinusoidal source.

addendum idea of how accurate estimate, i'd try resampling approach such cross-validation. think direction you're heading monte carlo idea; lots of work out there, that's wheel won't need re-invent.


Comments

Popular posts from this blog

linux - Using a Cron Job to check if my mod_wsgi / apache server is running and restart -

actionscript 3 - TweenLite does not work with object -

jQuery Ajax Render Fragments OR Whole Page -