Мені потрібна допомога в розумінні результатів обчислення DFT / FFT.
Я досвідчений інженер-програміст, і мені потрібно інтерпретувати деякі показання акселерометра смартфона, такі як пошук основних частот. На жаль, я проспав більшість моїх коледжних занять з ЕЕ п’ятнадцять років тому, але останні кілька днів читав теми DFT та FFT (мабуть, мало).
Будь ласка, жодної відповіді "йдіть на уроки ЕЕ". Я насправді планую це зробити, якщо роботодавець мені заплатить. :)
Тож ось моя проблема:
Я вловлював сигнал на частоті 32 Гц. Ось 1 секундний зразок із 32 пунктів, який я накреслив у Excel.
Потім я отримав код ШПФ написаний на Java, з Колумбійського університету (після дотримання пропозицій у дописі на тему " Надійний і швидкий ШПФ на Java ").
Результат роботи цієї програми такий. Я вважаю, що він працює на місці БПФ, тому він використовує один і той же буфер як для введення, так і для виводу.
Before:
Re: [0.887 1.645 2.005 1.069 1.069 0.69 1.046 1.847 0.808 0.617 0.792 1.384 1.782 0.925 0.751 0.858 0.915 1.006 0.985 0.97 1.075 1.183 1.408 1.575 1.556 1.282 1.06 1.061 1.283 1.701 1.101 0.702 ]
Im: [0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ]
After:
Re: [37.054 1.774 -1.075 1.451 -0.653 -0.253 -1.686 -3.602 0.226 0.374 -0.194 -0.312 -1.432 0.429 0.709 -0.085 0.0090 -0.085 0.709 0.429 -1.432 -0.312 -0.194 0.374 0.226 -3.602 -1.686 -0.253 -0.653 1.451 -1.075 1.774 ]
Im: [0.0 1.474 -0.238 -2.026 -0.22 -0.24 -5.009 -1.398 0.416 -1.251 -0.708 -0.713 0.851 1.882 0.379 0.021 0.0 -0.021 -0.379 -1.882 -0.851 0.713 0.708 1.251 -0.416 1.398 5.009 0.24 0.22 2.026 0.238 -1.474 ]
Отже, на даний момент я не можу зробити голови або хвости результату. Я розумію поняття DFT, такі як реальна частина - амплітуди компонентних косинусних хвиль, а уявна частина - амплітуди компонентних синусоїд. Я також можу слідувати цій схемі з великої книги " Керівництво вченого та інженера з цифрової обробки сигналів ":
Тож мої конкретні запитання:
Як знайти на виході ШПФ "найбільш часто зустрічаються частоти"? Це частина мого аналізу даних мого акселерометра. Чи слід читати реальний (косинусний) чи уявний (синусовий) масиви?
Я маю 32-точковий ввід у часовій області. Чи не повинен висновок ШПФ бути 16-елементним масивом для реалів та 16-елементним масивом для уявних? Чому програма дає мені реальні та уявні виходи масиву як розміром 32?
Пов’язане з попереднім запитанням, як проаналізувати індекси у вихідних масивах? Враховуючи моє введення 32 зразків, відібраних з частотою 32 Гц, я розумію, що на виході 16-елементного масиву його індекс повинен мати рівномірний розподіл до 1/2 частоти дискретизації (32 Гц), тому я правильно розумію, що кожен елемент масиву представляє (32 Гц * 1/2) / 16 = 1 Гц?
Чому вихід БПФ має від’ємні значення? Я думав, що значення представляють амплітуди синусоїди. Наприклад, вихід Real [3] = -1,075 повинен означати амплітуду -1,075 для косинусної хвилі частоти 3. Чи правильно? Як амплітуда може бути від’ємною?