Spec-Zone.ru › NumPy 1.10

Дискретное преобразование Фурье (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. Издательство Кембриджского университета, Кембридж, Великобритания.

Примеры

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

© 2008–2016 NumPy Developers
Licensed under the NumPy License.
https://docs.scipy.org/doc/numpy-1.10.1/reference/routines.fft.html

Spec-Zone.ru

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