Spec-Zone.ru › NumPy 1.17

Дискретное преобразование Фурье (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_k =  \sum_{m=0}^{n-1} a_m \exp\left\{-2\pi i{mk \over n}\right\}
\qquad k = 0,\ldots,n-1.

В общем случае ДПФ определено для комплексных входных и выходных данных, и одна частотная составляющая на линейной частоте f представлена комплексным экспоненциальным a_m = \exp\{2\pi i\,f m\Delta t\}, где \Delta t — интервал дискретизации.

Значения в результате следуют так называемому «стандартному» порядку: Если 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).

Обратное ДПФ определяется как

a_m = \frac{1}{n}\sum_{k=0}^{n-1}A_k\exp\left\{2\pi i{mk\over n}\right\}
\qquad m = 0,\ldots,n-1.

Она отличается от прямого преобразования знаком аргумента экспоненты и нормализацией по умолчанию на 1/n.

Нормализация

Нормализация по умолчанию не масштабирует прямые преобразования и масштабирует обратные преобразования на 1/n. Можно получить унитарные преобразования, установив ключевой аргумент norm в "ortho" (по умолчанию None), чтобы прямые и обратные преобразования были масштабированы на 1/\sqrt{n}.

Преобразования для вещественных и эрмитовых матриц

Когда входной массив является чисто вещественным, его преобразование является эрмитовым, т.е. компонент на частоте f_k является комплексно сопряжённым компоненту на частоте -f_k, что означает, что для вещественных входных данных нет информации в компонентах отрицательной частоты, которая не была бы уже доступна из компонентов положительной частоты. Семейство функций rfft разработано для работы с вещественными входными данными и использует эту симметрию, вычисляя только компоненты положительных частот до и включая частоту Найквиста. Таким образом, n входных точек дают n/2+1 комплексных выходных точек. Обратные преобразования этого семейства предполагают ту же симметрию своего входа, и для выхода из n точек используется n/2+1 входных точек.

Соответственно, когда спектр является чисто вещественным, сигнал является эрмитовым. Семейство функций hfft использует эту симметрию, используя n/2+1 комплексных точек во входной (временной) области для n вещественных точек в частотной области.

В более высоких размерностях преобразования Фурье используются, например, для анализа изображений и фильтрации. Вычислительная эффективность преобразования Фурье означает, что оно также может быть более быстрым способом вычисления больших свёртки, используя свойство, что свёртка во временной области эквивалентна точечному умножению в частотной области.

Более высокие размерности

В двух измерениях ДПФ определяется как

A_{kl} =  \sum_{m=0}^{M-1} \sum_{n=0}^{N-1}
a_{mn}\exp\left\{-2\pi i \left({mk\over M}+{nl\over N}\right)\right\}
\qquad k = 0, \ldots, M-1;\quad l = 0, \ldots, N-1,

что очевидным образом обобщается на более высокие размерности, и обратные преобразования также обобщаются аналогичным образом.

Ссылки

[CT] Кули, Джеймс В., и Джон В. Тьюки, 1965, «Алгоритм для машинного вычисления комплексных рядов Фурье», Math. Comput. 19: 297-301.
[NR] Пресс, У., Теукольский, С., Ветерлайн, В.Т., и Фланнери, Б.П., 2007, Числовые рецепты: Искусство научных вычислений, гл. 12-13. Изд-во Кембриджского университета, Кембридж, Великобритания.

Примеры

Примеры см. в различных функциях.

© 2005–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/routines.fft.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API