У меня есть массив (размер 128) данных, на которых я использую FFT. Я пытаюсь найти частоту данных через спектр БПФ. Проблема в том, что формула freq = i * Fs/N
не работает. Мои данные довольно шумные, и я не знаю, из-за моих шумных данных или из-за того, что я делаю что-то еще неправильно. Ниже мое Необработанные данные:Получение частоты FFT от шумных данных?
И это спектр, который является результатом преобразования:
Я получаю две максимальные пики равной величины с индексом 4 и 128 в выходной массив. Частота данных должна быть около 1.1333 Гц, но я получаю 5-6 или неправильные значения, когда я использую формулу:
freq = i * Fs/N;
где i
является индексом массива наибольшего пика величины, Fs
является частота дискретизации в Гц и N
- это размер данных.
Используя мои данные, вы получите freq = (4 * 11.9)/128
= 0,37 Гц, что очень сильно отличается от ожидаемого.
Если мои расчеты верны, есть ли способы улучшить мои данные? Или мои расчеты для частоты неправильны?
Для одного вашего спектра, кажется, содержится 256 точек, поэтому я предполагаю, что вы накладываете чередующиеся реальные и мнимые части, а не величины. Если 'i' - это индекс, показанный на вашем графике Spectrum, тогда результат будет отключен в 2 раза (не помогая вашему делу). Затем у вас есть сильная средняя/очень низкочастотная составляющая (раздел сырых данных колеблется между 98-100, а не около 0), что естественно появится в ячейках с более низким спектром. Удалите это смещение, и вам лучше увидеть пики спектра, связанные с вашими колебаниями данных. – SleuthEye
По сильному среднему значению вы имеете в виду пики на краях спектра? Я удалил около 1/5 спектра с каждой стороны и получил это: [ссылка на изображение] (http://imgur.com/Fc4ExB3). Поэтому я предполагаю, что мои данные слишком шумны, чтобы создать точный частотный спектр? – Piglet
Я тоже смущен об индексе максимальной величины. Предполагая, что имеется 256 точек данных, а мнимые части чередуются, если самая высокая величина указана в индексе 90, я бы сказал, i = 45, так как 45-я реальная величина будет равна индексу 90? – Piglet