Значение функции numpy.fft.fftfreq

Несколько дней назад я наткнулся на этот ответ об использовании БПФ.

В ответе есть такой кусок кода:

w = np.fft.fft(data)
freqs = np.fft.fftfreq(len(w))

Я прочитал о функции fftfreq в документации numpy (здесь), и я обнаружил, что он возвращает массив со следующим содержимым:

f = [0, 1, ...,   n/2-1,     -n/2, ..., -1] / (d*n)   if n is even
f = [0, 1, ..., (n-1)/2, -(n-1)/2, ..., -1] / (d*n)   if n is odd

В моем случае переменная d равна 1, а n — четное число.

Итак, мой вопрос: какова цель fftfreq?

Мне было интересно, была ли это своего рода треугольная оконная функция.


person Davide Pisanò    schedule 26.06.2017    source источник
comment
Это просто набор частот, которые соответствуют выходным данным БПФ, для построения графиков или чего-то еще.   -  person Ahmed Fasih    schedule 26.06.2017
comment
@AhmedFasih хорошо, я понял. Таким образом, каждый элемент массива должен быть умножен на частоту дискретизации, чтобы получить частоту. Я до сих пор не понимаю, почему :(   -  person Davide Pisanò    schedule 26.06.2017
comment
Вы можете передать интервал выборки в fftfreq, и он масштабирует вывод для вас, но да. Мне нравится использовать fftfreq, потому что немного сложно получить связь между значениями длины сигнала и частоты в зависимости от нечетного/четного.   -  person Ahmed Fasih    schedule 26.06.2017


Ответы (2)


Возвращенный массив с плавающей запятой f содержит центры интервалов частот в циклах на единицу интервала выборки (с нулем в начале). Например, если интервал между выборками указан в секундах, то единицей измерения частоты будет число циклов в секунду.

fftfreq дает диапазон возможных частот преобразования Фурье.

person Aditya Srivastava    schedule 11.10.2019

np.fft.fftfreq попробуйте сопоставить частотный диапазон (y) с своего рода «индексным» диапазоном (x), как показано на следующем рисунке. Обратите внимание, что blue line -> положительная частота, orange line -> отрицательная частота.

person IPhysResearch    schedule 08.02.2020