У меня вопрос по использованию БПФ. Используя функцию getBand(int i)
с Minimum, я могу извлечь амплитуду определенную частоту и сделайте красивые карты. Работает отлично.
Однако это скорее вопрос из любопытства. Когда я смотрю на значения, извлеченные при воспроизведении одной и той же песни два раза с использованием одной и той же частоты (поэтому амплитуда должна быть одинаковой), но я получаю очень разные значения - почему это?
0.0,0.0,0.0,0.0,0.0,0.08706585,0.23708777,0.83046436,0.74603105,0.30447206
0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.08706585,0.4790409,0.9608221,0.83046436,0.74603105
2 ответа
Вы уверены, что входные данные в обоих случаях одинаковы? Если вы просто берете случайный сегмент песни, то результат БПФ будет очень отличаться для разных начальных точек в песне.
Декодирование mp3 может быть нестабильным и / или начальная буферизация подпрограммы fft может быть нестабильной (различная длительность тишины перед серией). В этом случае похоже, что ввод на 2-м выходе примерно на 2 ступени больше.
Затем, если временной интервал, в котором выполняются fft, больше, чем размер окна fft, разница во вводе может привести к тому, что окна fft попадут в совершенно разные части ряда, что может позже объяснить очень разные значения. в выходах.
Ситуация должна быть более ясной, если вы можете увеличить «временное разрешение» (количество выполняемых fft за заданное время) или увеличить размер окна fft, чтобы измерения fft не выполнялись редко. В идеале они должны перекрываться, прежде чем можно будет ожидать совпадения шаблона между сканированиями, выполненными с нарушением шага.
Похожие вопросы
Новые вопросы
fft
БПФ - это сокращение от быстрого преобразования Фурье, любого из набора алгоритмов для быстрого вычисления дискретного преобразования Фурье (ДПФ).