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