Использование класса по адресу: https://www.ee.columbia.edu/~ronw/code/MEAPsoft/doc/html/FFT_8java-source.html
Краткое объяснение: вызовите fft () , предоставив x в качестве данных амплитуды, y как массив из нулей, после того, как функция вернет ваш первый ответ, будет [0] = x [0] ^ 2 + y [0] ^ 2.
Полное объяснение: FFT является комплексным преобразованием, оно принимает N комплексных чисел и производит N комплексных чисел.Таким образом, x [0] - действительная часть первого числа, y [0] - комплексная часть.Эта функция вычисляет на месте, поэтому, когда функция возвращает x, y будет иметь действительные и сложные части преобразования.
Одним из типичных применений является вычисление спектра мощности звука.Ваши аудиосэмплы имеют только реальную часть, ваша сложная часть равна 0. Чтобы рассчитать спектр мощности, вы добавляете квадрат реальной и сложной частей P [0] = x [0] ^ 2 + y [0] ^ 2.
Также важно отметить, что преобразование Фурье при применении к действительным числам приводит к симметричному результату (x [0] == x [x.lenth-1]).Данные в точке x [x.length / 2] имеют данные с частоты f = 0 Гц.x [0] == x [x.length-1] содержит данные для частоты, равной частоте дискретизации (например, если частота дискретизации была 44000 Гц, это означает, что f [0] относится к 22 кГц).
Полная процедура:
- создать массив p [n] с 512 сэмплами с нулями
- Собрать 1024 сэмпла, записать их в x
- Установить y [n]= 0 для всех n
- вычислить fft (x, y)
- вычислить p [n] + = x [n + 512] ^ 2 + y [n + 512] ^ 2 для всехn = от 0 до 512
- , чтобы перейти к 2, чтобы взять другую партию (после 50 партий перейти к следующему шагу)
- сюжет p
- перейти к 1
Чем настроить фиксированное число на свой вкус.
Число 512 определяет окно выборки, я не буду его объяснять.Просто не уменьшайте его слишком сильно.
Число 1024 всегда должно быть двойным от последнего числа.
Число 50 определяет частоту обновления.Если ваша частота дискретизации составляет 44000 выборок в секунду, частота обновления будет равна: R = 44000/1024/50 = 0,85 секунды.