Cleanup the guess algorithms for curve fitting #896
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR simplifies complicated oscillation signal initial guess, in which we usually must take special care for low frequency signal (e.g. FFT is not robust to bias, thus we should precisely eliminate base offset, but this is hardly estimated for low frequency signal). This PR adds/modifies several initial guess functions, and these functions are integrated into a meta function
composite_sinusoidal_estimate
that internally assembles the best algorithm.Details and comments
New algorithm
sinusoidal_freq_offset
is also introduced by the PR. This function simultaneously estimates base offset and frequency and thus this is robust when both base and frequency are not known. This gist shows some robustness analysis I did, and the result indicates the algorithm provides reasonable guess when data contains >T/2 samples.(something still missing)
exp_decay
when it is used for damped oscillation signal. Any thoughts for improvement?