Мне нужна помощь в понимании результатов расчетов DFT / FFT.
Я опытный инженер-программист, и мне нужно интерпретировать некоторые показания акселерометра смартфона, такие как поиск основных частот. К сожалению, я спал в большинстве моих курсов по EE в колледже пятнадцать лет назад, но я читал о DFT и FFT в течение последних нескольких дней (видимо, без особой пользы).
Пожалуйста, не отвечайте "иди на EE класс". Я на самом деле планирую сделать это, если мой работодатель заплатит мне. :)
Так вот моя проблема:
Я зафиксировал сигнал с частотой 32 Гц. Вот 1 секунда выборки из 32 точек, которую я наметил в Excel.
![enter image description here](https://i.stack.imgur.com/IHj1I.jpg)
Затем я получил код FFT , написанный на Java от Колумбийского университета (после того, как следовал советам в посте " Надежное и быстрое FFT в 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, такие как действительная часть, являющаяся амплитудами составляющих косинусных волн, и мнимая часть, являющаяся амплитудами составляющих синусоидальных волн. Я также могу следовать этой диаграмме из великой книги " Руководство ученого и инженера по цифровой обработке сигналов ":
![enter image description here](https://i.stack.imgur.com/MDI8J.jpg)
Итак, мои конкретные вопросы:
Как найти «наиболее часто встречающиеся частоты» на выходе БПФ? Это часть моего анализа моих данных акселерометра. Должен ли я читать реальные (косинус) или мнимые (синус) массивы?
У меня 32-точечный вход во временной области. Разве выходные данные БПФ не должны быть массивом из 16 элементов для вещественных чисел и массивом из 16 элементов для мнимых? Почему программа выдает мне реальные и мнимые выходные данные массива размером 32?
В связи с предыдущим вопросом, как мне проанализировать индексы в выходных массивах? Учитывая мой ввод 32 выборок с частотой дискретизации 32 Гц, я понимаю, что выход массива из 16 элементов должен иметь свой индекс, равномерно распределенный до 1/2 частоты дискретизации (32 Гц), поэтому я правильно понимаю, что каждый элемент массива представляет (32 Гц * 1/2) / 16 = 1 Гц?
Почему выход FFT имеет отрицательные значения? Я думал, что значения представляют амплитуды синусоиды. Например, выход Real [3] = -1,075 должен означать амплитуду -1,075 для косинусоидальной волны частоты 3. Это правильно? Как амплитуда может быть отрицательной?