Дискретное преобразование Фурье (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]) | Вычислить обратное n-точечное ДПФ для вещественного входного сигнала. |
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) и было представлено в современной форме Кули и Такки [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] | Кули, Джеймс У., и Джон У. Такки, 1965, «Алгоритм для машинного вычисления комплексных рядов Фурье», Math. Comput. 19: 297-301. |
| [NR] | Пресс, У., Теукольский, С., Ветерлайн, У.Т., и Фланнери, Б.П., 2007, Численные рецепты: Искусство научных вычислений, главы 12-13. Издательство Кембриджского университета, Кембридж, Великобритания. |
Примеры
Примеры см. в различных функциях.
© 2008–2017 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.fft.html