Разница в амплитуде от одного и того же источника с использованием БПФ - PullRequest
2 голосов
/ 05 апреля 2010

У меня вопрос по поводу использования БПФ. Используя функцию getBand(int i) с Minim , я могу извлечь амплитуду определенной частоты и сделать из нее красивые карты. Прекрасно работает.

Впрочем, это скорее вопрос любопытства. Когда я смотрю на значения, извлеченные из воспроизведения одной и той же песни два раза с использованием одной и той же частоты (поэтому амплитуда должна быть одинаковой), но я получаю очень разные значения - почему это так?

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 ]

3 голосов
/ 05 апреля 2010

Вы уверены, что входы одинаковы в обоих случаях? Если вы просто берете случайный фрагмент песни, то выходной сигнал БПФ будет очень различным для разных начальных точек в песне.

2 голосов
/ 05 апреля 2010

Декодирование mp3 может быть ошибочным, и / или начальная буферизация подпрограммы fft может быть ошибочной (различная длина молчания, предшествующая серии). В этом случае, похоже, что входной сигнал во втором выходе примерно на 2 ступени больше.

Тогда, если интервал времени, в течение которого выполняются fft, больше, чем размер окна fft, разница во вводе может привести к тому, что окна fft приземляются на совершенно разные части серии, что может объяснить другие значения позже в выходах.

Ситуация должна быть более ясной, если вы можете увеличить «временное разрешение» (количество выполненных за заданное время операций fft) или увеличить размер окна fft, чтобы измерения fft не выполнялись редко. В идеале они должны перекрываться, прежде чем мы сможем ожидать совпадения с шаблоном сканирования, выполненного без шага.

...