Определение набора данных аппроксимация синусоиды

существует ли алгоритм, который можно использовать для определения того, аппроксимирует ли выборка данных, взятых на фиксированных временных интервалах, синусоидальную волну?

4 ответов


возьмите преобразование Фурье, которое преобразует данные в частотную таблицу (поиск fft, быстрое преобразование Фурье, для реализации. Например, библиотека FFTW). Если это синус или Косинус, таблица частот будет содержать одно очень высокое значение, соответствующее частоте, которую вы ищете, и некоторый шум на других частотах.

альтернативно, сопоставьте несколько sinussen на нескольких частотах и попробуйте сопоставить их с помощью перекрестной корреляции: сумма квадраты различий между вашим сигналом и синусом, который вы пытаетесь подогнать. Вам нужно будет сделать это для sinussen в диапазоне частот, конечно. И вам нужно будет сделать это, переводя синус вдоль оси x, чтобы найти фазу.


вы можете вычислить преобразование Фурье и искать один всплеск. Это скажет вам, что набор данных аппроксимирует синусоидальную кривую на этой частоте.


выстрел в синий: вы могли бы воспользоваться тем, что интеграл a*sin(t) is a*cos(t). Отслеживание min / max ваших данных должно позволить вам знать a.


Регистрация метод наименьших квадратов.

@CookieOfFortune: я согласен, но серия Фурье оптимальна в смысле наименьших квадратов (как сказано в статье Википедии).

Если вы хотите сначала поиграть с собственными входными данными, проверьте дискретное преобразование Фурье (DFT) на вольфрам Альфа. Как отмечалось ранее, если вы хотите быструю реализацию, Вы должны проверить один из нескольких FFT-библиотеки.