Дискретное преобразование Фурье (numpy.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-мерное обратное дискретное преобразование Фурье. |
Преобразования Фурье для вещественных данных
rfft(a[, n, axis, norm]) | Вычислить одномерное дискретное преобразование Фурье для вещественного входного массива. |
irfft(a[, n, axis, norm]) | Вычислить обратное одномерное преобразование ДПФ для вещественного входного массива. |
rfft2(a[, s, axes, norm]) | Вычислить двумерное преобразование Фурье для вещественного массива. |
irfft2(a[, s, axes, norm]) | Вычислить двумерное обратное преобразование Фурье для вещественного массива. |
rfftn(a[, s, axes, norm]) | Вычислить N-мерное дискретное преобразование Фурье для вещественного входного массива. |
irfftn(a[, s, axes, norm]) | Вычислить обратное N-мерное преобразование Фурье для вещественного входного массива. |
Преобразования Фурье для эрмитовых данных
hfft(a[, n, axis, norm]) | Вычислить преобразование Фурье для сигнала с эрмитовой симметрией, т.е., с вещественным спектром. |
ihfft(a[, n, axis, norm]) | Вычислить обратное преобразование Фурье для сигнала с эрмитовой симметрией. |
Вспомогательные функции
fftfreq(n[, d]) | Возвращает частоты дискретного преобразования Фурье. |
rfftfreq(n[, d]) | Возвращает частоты дискретного преобразования Фурье (для использования с rfft, irfft). |
fftshift(x[, axes]) | Сдвигает компонент нулевой частоты в центр спектра. |
ifftshift(x[, axes]) | Обратное преобразование fftshift. |
Общие сведения
Преобразование Фурье — это фундаментальный метод выражения функции как суммы периодических составляющих и восстановления функции из этих составляющих. Когда и функция, и ее преобразование Фурье заменяются дискретными аналогами, это называется дискретным преобразованием Фурье (ДПФ). ДПФ стало неотъемлемой частью численного вычисления, отчасти благодаря очень быстрому алгоритму его вычисления, называемому быстрым преобразованием Фурье (БПФ), который был известен Гауссу (1805) и был представлен в своей современной форме Кули и Тьюки [CT309]. Пресс и др. [NR309] предоставляют доступное введение в преобразование Фурье и его приложения.
Поскольку дискретное преобразование Фурье разделяет входные данные на составляющие, которые вносят вклад на дискретных частотах, оно имеет множество применений в цифровой обработке сигналов, например, для фильтрации, и в этом контексте дискретизированный вход в преобразование обычно называется сигналом, который существует во временной области. Выход называется спектром или преобразованием и существует в частотной области.
Детали реализации
Существует множество способов определения ДПФ, которые различаются знаком показателя степени, нормировкой и т. д. В этой реализации ДПФ определяется как
В общем случае ДПФ определяется для комплексных входных и выходных данных, а составляющая одной частоты при линейной частоте представлена комплексной экспонентой
, где
— интервал дискретизации.
Значения в результате следуют так называемому «стандартному» порядку: Если 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 вещественных точек в частотной области.
В более высоких размерностях БПФ используются, например, для анализа изображений и фильтрации. Вычислительная эффективность БПФ означает, что это также более быстрый способ вычисления больших свёртки, используя свойство, что свёртка во временной области эквивалентна точечному умножению в частотной области.
Более высокие размерности
В двух измерениях ДПФ определяется как
что расширяется очевидным образом до более высоких измерений, а обратные преобразования в более высоких измерениях также расширяются аналогичным образом.
Ссылки
| [CT309] | Кули, Джеймс У., и Джон У. Тьюки, 1965, «Алгоритм для машинного вычисления комплексных рядов Фурье», Math. Comput. 19: 297-301. |
| [NR309] | Пресс, У., Теукольский, С., Веттерин, У. Т., и Фланнери, Б. П., 2007, Численные рецепты: Искусство научных вычислений, гл. 12-13. Изд-во Кембриджского университета, Кембридж, Великобритания. |
Примеры
Примеры см. в различных функциях.
© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.14.5/reference/routines.fft.html