2015-02-08 2 views
0

У меня есть образец звука, который отбирается по адресу 22k Hz и всего образцов = 660k, так как продолжительность составляет 30 секунд. (22k * 30 = 660K)Путаница о функции scipy.fft

Когда я построить БПФ полной выборки, я получаю симметричный граф с 660K х значений и соответствующих значений Y, как показано: enter image description here

Это, кажется, читается как звук образец имеет максимальную частоту 330 кГц (у меня есть идея, что она повторяется после половины преобразования fft из-за отрицательных и положительных частот, имеющих одинаковые значения). Если я отрегулирую длину образца звука, максимальная частота fft-графика изменится соответственно (длина/2 -> max freq/2), enter image description here , который не должен происходить, поскольку частота не зависит от длины образца.

Любые советы? Я не могу это понять.

ответ

2

Когда вы вычислить БПФ аудио (или какие-либо данные) длины Н при частоте дискретизации фс результат будет массивом, Y, из N комплексных чисел, где

(Y (n)) = амплитуда на частоте (n * fs)/N Гц.

Где n = 0,1,2, ... N.

, что означает, что Y содержит информацию о частотах от 0 до fs (В некоторых программах, таких как matlab, диапазон возвращается от -fs/2 до fs/2 вместо).

В вашем случае фс = 22000Hz, Н = 660000, так

величина (У (п)) = амплитуда при частоте (п * 22000)/660000 Гц; n = 0,1,2, ... 660000.

Таким образом, вы х-ось должна работать от 0 Гц до 22000Hz, а не от 0 до 660000.

+0

Правого, вот что я думаю, что изменение размера выборки не должно изменять FFT, так как она образцы ДО определенной частоты ограничение (частота выборки). Я буду запускать аналогичный код в MATLAB и комментировать здесь. – goelakash

+0

Изменение количества выборок не сильно меняло спектр (как и ожидалось), проблема заключается в том, что вы неправильно рисуете, вы рисуете Amplitude vs Sample Index вместо Amplitude vs Frequency. Количество образцов не должно влиять на диапазон ось х вообще. – KillaKem

+0

Вам не нужно идти в Matlab, я давал вам пример программного обеспечения, которое возвращает другой диапазон, я не должен был включать эту строку, поскольку она, похоже, вызвала некоторую путаницу. – KillaKem

Смежные вопросы