Как частота дискретизации и входные выборки переменной длины соотносятся с входными данными БПФ фиксированного размера?

Я смотрю на FFTW, чтобы получить спектр образца аудиоданных.

Насколько я понимаю, «план» процесса выбирает количество N выборок, что соответствует периоду времени T секунд. Значение input[x] - это амплитуда волны в момент времени x*N/T, а комплексная амплитуда output[x] как-то связана с частотой.

Я знаю, что мне нужно применить оконную функцию, но не знаю, как это сделать. Входной буфер представляет собой массив Ni выборок, обычно Ni!=N, и при частоте F Гц это соответствует времени Ti=Ni/F секунд с Ti!=T в целом.

Итак, как мне заполнить N входные данные для БПФ с учетом Ni выборок, и, учитывая N и F, какова частота, соответствующая output[x]?


person spraff    schedule 12.05.2014    source источник
comment
На SO уже есть много хороших вопросов и ответов на эту тему.   -  person Paul R    schedule 12.05.2014
comment
Вы не поверите, но я просмотрел. Я не нашел объяснения, как длина выборки соотносится с размером плана.   -  person spraff    schedule 12.05.2014
comment
Хорошо - объединяем несколько пунктов в ответе ниже ...   -  person Paul R    schedule 12.05.2014


Ответы (1)


На SO уже есть много хороших вопросов и ответов на эту тему, но несколько общих указателей:

  • спектр вашего образца обычно меняется во времени
  • вы обычно выбираете размер окна (== размер БПФ), при котором в спектре будут небольшие краткосрочные изменения, например 10 мс (требования к разрешению частоты могут повлиять на этот выбор), поэтому, если ваша частота дискретизации, например, 44,1 кГц, тогда вы можете выбрать размер БПФ, скажем, 4096.
  • общая выборка обычно обрабатывается с использованием последовательных окон (то есть блоков выборок - они обычно перекрываются, например, на 50%), поэтому вы фактически получаете последовательность изменяющихся во времени спектров
  • получение частотной информации из спектров покрывается этим отличным SO-ответом
  • вам необходимо применить оконную функцию к каждому последовательному блоку выборок перед вычислением БПФ
  • входными данными для БПФ будут реальные значения (из вашего блока выборок) - если вы используете обычное БПФ от комплексного к комплексному, тогда установите мнимые части ввода на 0
  • выходом БПФ будут комплексные значения, содержащие информацию об амплитуде и фазе - для реального входа выход (сопряженный) симметричный, поэтому на самом деле полезны только первые N / 2 выходных бина
  • чтобы получить значение амплитуды в дБ из выходного лотка, используйте mag_dB = 10 * log10(re*re + im*im)
  • вы можете построить последовательность выходных спектров в виде спектрограммы, используя цвет для амплитуды в дБ, с частотой и индекс блока выборки (== время) в качестве двух осей

Смотрите также:

person Paul R    schedule 12.05.2014