Выравнивание кадров FFT - PullRequest
       6

Выравнивание кадров FFT

1 голос
/ 16 сентября 2011

У меня есть 2 100% идентичных файла WAVE, которые я конвертирую в FFT. Наложив их, я получаю идеальное совпадение.

Однако, если я отрежу фрагмент не по размеру кадра в начале одного из данных, тогда БПФ не будут совпадать (выровнены по концу).

Я предполагаю, что это из-за того, что частоты содержатся в кадре. Если частота делится между двумя кадрами, она будет отображаться с меньшей энергией в обоих кадрах, чем если бы она была сосредоточена в одном кадре.

Как я могу компенсировать / обойти этот эффект?

Ответы [ 3 ]

1 голос
/ 17 сентября 2011

Единственный точный способ сделать это - ОБЪЯВИТЬ ваши данные (при условии, что начальное окно без потерь), затем повторно окно и повторно БПФ, используя новое смещение. Может быть, лучше просто сделать несколько наборов кадров FFT, каждый с разным начальным смещением.

1 голос
/ 17 сентября 2011

Возможно, вы захотите применить оконную функцию перед вычислением БПФ.

http://www.google.com/search?q=windowing+fft

http://en.wikipedia.org/wiki/Discrete_Fourier_transform:

"Использование DFT подразумевает, чтоанализируемый конечный сегмент - это один период бесконечно расширенного периодического сигнала; если это не совсем так, необходимо использовать оконную функцию для уменьшения артефактов в спектре. "

Я думаю, что выВы на правильном пути, разбивая сигнал на перекрывающиеся кадры, но вам необходимо учитывать критерии соответствия (выяснить некоторые эвристические особенности, например, 3 доминирующие частоты), размер кадров (слишком маленький, и вы пропустите более низкие частоты,слишком высокое, и у вас меньше разрешение) и т. д. Проведите небольшое исследование, я уверен, что многие люди занимались этой проблемой, и опубликованные статьи .

0 голосов
/ 16 сентября 2011

Почему вы ожидаете, что результат преобразования Фурье будет идентичным после того, как вы отрежете часть одного из образцов?Я не уверен, что вы пытаетесь компенсировать, это ожидаемое поведение.

Если вы сравниваете два образца, чтобы увидеть, насколько они различаются по «сигнатуре», то вы, вероятно, хотите нормализовать результатваш DFT.Суммируйте все значения энергии в каждом бине частоты, а затем разделите значение в каждом бине на эту сумму, так что сумма всей энергии в результате равна 1. Позволяет сравнивать два разных образца яблоки-яблоки независимо от длины.

Обратите внимание, что это только один, возможно, слишком упрощенный способ нормализации ДПФ.Есть бесчисленное множество других.В зависимости от ваших входных данных и того, что вы планируете с ними делать, нормализация журнала может быть лучше, чем линейная.

...