Ну вот попробовал простой подход к оценке частоты единственного синусоидального компонента. Вторая производная от синусоиды это синусоида тех же частоты и фазы, но амплитуда домножена на величину, зависящую от частоты. Поскольку у нас s(t) задан дискретно, то используем аппроксимацию производной разностями, что для второй производной выглядит, как
![$d(t)=2s(t)-s(t-1)-s(t+1)$ $d(t)=2s(t)-s(t-1)-s(t+1)$](https://dxdy-03.korotkov.co.uk/f/e/b/c/ebcbb534bc78c28791a70cda37238fa982.png)
Строим линейную регрессию s(t) на d(t), свободный член даёт искомую постоянную составляющую, коэффициент при d(t) очевидным образом связан с частотой (если честно - мне лень выписывать, но там действительно несложно).
Затем, зная частоту f, строим регрессию на
![$sin 2\pi f$ $sin 2\pi f$](https://dxdy-04.korotkov.co.uk/f/3/4/a/34ae976e3fcf861400d103f6e490a46c82.png)
и
![$\cos 2\pi f$ $\cos 2\pi f$](https://dxdy-01.korotkov.co.uk/f/0/f/a/0faf606a97f8b9f1458d39fafde700d182.png)
Получаем оценки двух амплитуд (синфазной и квадратурной, щегольну умным словом) составляющих, и, если надо, получаем фазу и амплитуду сигнала в целом.
Результат на графике (синее - исходный сигнал, красное - оценка)
Видно, что не всё так хорошо, разница мала, но систематически отличается слева и справа от центра рисунка, что, надо думать, продукт неточности оценки частоты ("фаза плывёт", на величину разности оцененной и истинной частоты за секунду). Тут можно дошлифовать каким-либо способом (для Левенберга-Марквардта найти отклонения по точкам и построить регрессию на производную оцененного сигнала по частоте, коэффициент этой регрессии даст поправку к частоте, или же использовать другой предложенный здесь приём, рассматривать частоту, как параметр нелинейной оптимизационной задачи, строя регрессию s(t) на синусы и косинусы, как функции t).
![Изображение](https://i.ibb.co/H4x2WHW/GraFreq.jpg)
Подход обобщаем на большее, но известное число составляющих. На каждую добавляется по две разности (т.е. для двух синусоид надо брать s(t-2), s(t-1), s(t), s(t+1), s(t+2); симметрия точек не обязательна, можно брать точки вообще по одну сторону от t, получится некая авторегрессия). Расчёт частот несколько усложнится, но тоже возможен.