Дисперсное преобразование Фурье (numpy.fft)
Стандартные FFT
fft(a[, n, axis, norm]) | Вычислить одномерное дискретное преобразование Фурье. |
ifft(a[, n, axis, norm]) | Вычислить одномерное обратное дискретное преобразование Фурье. |
fft2(a[, s, axes, norm]) | Вычислить двумерное дискретное преобразование Фурье |
ifft2(a[, s, axes, norm]) | Вычислить двумерное обратное дискретное преобразование Фурье. |
fftn(a[, s, axes, norm]) | Вычислить N-мерное дискретное преобразование Фурье. |
ifftn(a[, s, axes, norm]) | Вычислить N-мерное обратное дискретное преобразование Фурье. |
Вещественные FFT
rfft(a[, n, axis, norm]) | Вычислить одномерное дискретное преобразование Фурье для вещественного входа. |
irfft(a[, n, axis, norm]) | Вычислить обратное преобразование n-точечной ДПФ для вещественного входа. |
rfft2(a[, s, axes, norm]) | Вычислить двумерное преобразование Фурье вещественного массива. |
irfft2(a[, s, axes, norm]) | Вычислить двумерное обратное преобразование Фурье вещественного массива. |
rfftn(a[, s, axes, norm]) | Вычислить N-мерное дискретное преобразование Фурье для вещественного входа. |
irfftn(a[, s, axes, norm]) | Вычислить обратное N-мерное преобразование Фурье вещественного входа. |
Эрмитовы FFT
hfft(a[, n, axis, norm]) | Вычислить FFT сигнала, имеющего эрмитову симметрию (вещественный спектр). |
ihfft(a[, n, axis, norm]) | Вычислить обратное FFT сигнала, имеющего эрмитову симметрию. |
Вспомогательные функции
fftfreq(n[, d]) | Возвращает частоты дискретного преобразования Фурье. |
rfftfreq(n[, d]) | Возвращает частоты дискретного преобразования Фурье (для использования с rfft, irfft). |
fftshift(x[, axes]) | Смещает компонент нулевой частоты в центр спектра. |
ifftshift(x[, axes]) | Обратное преобразование fftshift. |
Общие сведения
Преобразование Фурье — это метод выражения функции как суммы периодических компонент и восстановления функции из этих компонент. Когда и функция, и её преобразование Фурье заменяются дискретными аналогами, это называется дискретным преобразованием Фурье (ДПФ). ДПФ стало основой численного вычисления частично благодаря очень быстрому алгоритму его вычисления, называемому быстрым преобразованием Фурье (БПФ), которое было известно Гауссу (1805) и было представлено в его современном виде Кули и Такке [CT]. Пресс и др. [NR] предоставляют доступное введение в преобразование Фурье и его приложения.
Поскольку дискретное преобразование Фурье разделяет входной сигнал на компоненты, которые вносят вклад на дискретных частотах, оно имеет множество применений в цифровой обработке сигналов, например, для фильтрации, и в этом контексте дискретизированный входной сигнал преобразования обычно называется сигналом, который существует во временной области. Выход называется спектром или преобразованием и существует в частотной области.
Детали реализации
Существует много способов определения ДПФ, отличающихся знаком показателя, нормировкой и т. д. В этой реализации ДПФ определяется как

В общем случае ДПФ определяется для комплексных входных и выходных данных, и составляющая одной частоты при линейной частоте
представлена комплексным экспоненциальным
, где
— интервал дискретизации.
Значения в результате следуют так называемому «стандартному» порядку: Если A = fft(a, n), то A[0] содержит член нулевой частоты (сумма сигнала), который всегда чисто вещественный для вещественных входных данных. Затем A[1:n/2] содержит положительные частоты, а A[n/2+1:] содержит отрицательные частоты в порядке убывания отрицательной частоты. Для чётного числа входных точек A[n/2] представляет как положительные, так и отрицательные частоты Найквиста, а также является чисто вещественным для вещественного входа. Для нечётного числа входных точек A[(n-1)/2] содержит наибольшую положительную частоту, а A[(n+1)/2] содержит наибольшую отрицательную частоту. Функция np.fft.fftfreq(n) возвращает массив, дающий частоты соответствующих элементов на выходе. Функция np.fft.fftshift(A) сдвигает преобразования и их частоты, чтобы поместить компоненты нулевой частоты посередине, а np.fft.ifftshift(A) отменяет этот сдвиг.
Когда вход a является сигналом во временной области, и A = fft(a), np.abs(A) — это амплитудный спектр, а np.abs(A)**2 — это энергетический спектр. Спектр фаз получается с помощью np.angle(A).
Обратное ДПФ определяется как

Он отличается от прямого преобразования знаком аргумента показательной функции и значения нормировки по умолчанию
.
Нормирование
Нормирование по умолчанию имеет прямое преобразование без масштабирования, а обратные преобразования масштабируются на
. Возможно получить унитарные преобразования, установив ключевой аргумент norm в "ortho" (значение по умолчанию None) так, чтобы прямое и обратное преобразования масштабировались на
.
Вещественные и эрмитовы преобразования
Когда вход чисто вещественный, его преобразование является эрмитовым, т. е. компонент на частоте
является комплексно сопряжённым с компонентом на частоте
, что означает, что для вещественных входов нет информации в компонентах отрицательной частоты, которая не была бы уже доступна из компонент положительной частоты. Семейство функций rfft разработано для работы с вещественными входами и использует эту симметрию, вычисляя только положительные частоты, включая и частоту Найквиста. Таким образом, n входных точек производят n/2+1 комплексных выходных точек. Обратные преобразования этой семейства предполагают ту же симметрию входных данных, и для выхода из n точек используются n/2+1 входных точек.
Соответственно, когда спектр чисто вещественный, сигнал является эрмитовым. Семейство функций hfft использует эту симметрию, используя n/2+1 комплексных точек во входной (временной) области для n вещественных точек в частотной области.
В многомерных пространствах используются БПФ, например, для анализа и фильтрации изображений. Высокая вычислительная эффективность БПФ означает, что это также может быть более быстрый способ вычисления больших сверток, используя свойство, что свертка во временной области эквивалентна точечному умножению в частотной области.
Многомерные пространства
В двух измерениях ДПФ определяется как

что очевидным образом обобщается на многомерные пространства, и обратные преобразования также обобщаются аналогичным образом.
Ссылки
| [CT] | Cooley, James W., and John W. Tukey, 1965, “An algorithm for the machine calculation of complex Fourier series,” Math. Comput. 19: 297-301. |
| [NR] | Press, W., Teukolsky, S., Vetterline, W.T., and Flannery, B.P., 2007, Numerical Recipes: The Art of Scientific Computing, ch. 12-13. Cambridge Univ. Press, Cambridge, UK. |
Примеры
Примеры см. в различных функциях.
© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.11.0/reference/routines.fft.html