Spec-Zone.ru › NumPy 1.20

Преобразование дискретного Фурье (numpy.fft)

Модуль SciPy scipy.fft является более полным супернабором numpy.fft, который включает только базовый набор процедур.

Стандартные преобразования 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-мерное обратное преобразование дискретного Фурье.

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

rfft(a[, n, axis, norm])

Вычислить одномерное преобразование дискретного Фурье для вещественного входного сигнала.

irfft(a[, n, axis, norm])

Вычисляет обратное преобразование rfft.

rfft2(a[, s, axes, norm])

Вычислить двумерное преобразование FFT вещественного массива.

irfft2(a[, s, axes, norm])

Вычисляет обратное преобразование rfft2.

rfftn(a[, s, axes, norm])

Вычислить N-мерное преобразование дискретного Фурье для вещественного входного сигнала.

irfftn(a[, s, axes, norm])

Вычисляет обратное преобразование rfftn.

Преобразования FFT для эрмитовых функций

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.

Преобразование типов

numpy.fft повышает float32 и complex64 массивы до float64 и complex128 массивов соответственно. Для реализации FFT, которая не повышает входные массивы, см. scipy.fftpack.

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

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

Преобразования вещественных и эрмитовых функций

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

END_OF_DOCUMENT_MARKER

Соответственно, когда спектр чисто вещественный, сигнал является эрмитовым. Семейство функций 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/routines.fft.html

Spec-Zone.ru

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