Определение, приближает ли набор данных синусоидальную волну

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

Вы используете базовый Long объект, когда:

  • Вам нужен класс-обертка
  • Вы работаете с коллекцией
  • Вы хотите иметь дело только с с объектами, а не примитивами (что-то вроде получается)

Вы используете AtomicLong, когда:

  • Вы должны гарантировать, что значение может использоваться одновременно environment
  • Вам не нужен класс-оболочка (так как этот класс не будет автоматически блокировать)

Long сам по себе не допускает взаимодействия потоков, так как оба потока могут видеть оба и обновите то же значение, но с AtomicLong, есть довольно приличные гарантии вокруг значения, которое увидят несколько потоков.

Фактически, если вам не приходится работать с потоками, вам не нужно использовать AtomicLong.

8
задан 14 June 2009 в 09:26
поделиться

4 ответа

Take the fourier transform which transforms the data into a frequency table (search for fft, fast fourier transformation, for an implementation. For example, FFTW). If it is a sinus or cosinus, the frequency table will contain one very high value corresponding to the frequency you're searching for and some noise at other frequencies.

Alternatively, match several sinussen at several frequencies and try to match them using cross correlation: the sum of squares of the differences between your signal and the sinus you're trying to fit. You would need to do this for sinussen at a range of frequencies of course. And you would need to do this while translating the sinus along the x-axis to find the phase.

16
ответ дан 5 December 2019 в 07:13
поделиться

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

7
ответ дан 5 December 2019 в 07:13
поделиться

Выстрел в синий цвет: вы можете воспользоваться тем фактом, что интеграл от a * sin (t) равен a * cos (t) . Отслеживание минимального / максимального значения ваших данных должно позволить вам узнать a .

0
ответ дан 5 December 2019 в 07:13
поделиться

Проверьте метод наименьших квадратов .

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

Если если вы хотите сначала поиграть с собственными входными данными, проверьте Дискретное преобразование Фурье (ДПФ) на Wolfram Alpha. Как отмечалось ранее, если вам нужна быстрая реализация, вам следует проверить одну из нескольких FFT-библиотек .

0
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: