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