Дискретное преобразование Фурье (numpy.fft)
Модуль SciPy scipy.fft представляет собой более полное расширение numpy.fft, которое включает только базовый набор процедур.
Стандартные преобразования Фурье
| Вычисление одномерного дискретного преобразования Фурье. |
| Вычисление одномерного обратного дискретного преобразования Фурье. |
| Вычисление двумерного дискретного преобразования Фурье. |
| Вычисление двумерного обратного дискретного преобразования Фурье. |
| Вычисление N-мерного дискретного преобразования Фурье. |
| Вычисление N-мерного обратного дискретного преобразования Фурье. |
Действительные преобразования Фурье
| Вычисление одномерного дискретного преобразования Фурье для вещественного ввода. |
| Вычисляет обратное преобразование |
| Вычисление двумерного преобразования Фурье вещественного массива. |
| Вычисляет обратное преобразование |
| Вычисление N-мерного дискретного преобразования Фурье для вещественного ввода. |
| Вычисляет обратное преобразование |
Эрмитовы преобразования Фурье
Вспомогательные процедуры
| Возвращает частоты дискретного преобразования Фурье. |
| Возвращает частоты дискретного преобразования Фурье (для использования с rfft, irfft). |
| Сдвигает компонент нулевой частоты в центр спектра. |
| Обратное преобразование |
Общие сведения
Преобразование Фурье — это метод представления функции как суммы периодических составляющих и восстановления функции из этих составляющих. Когда и функция, и ее преобразование Фурье заменены дискретными аналогами, это называется дискретным преобразованием Фурье (ДПФ). ДПФ стало основой численного вычисления, отчасти благодаря очень быстрому алгоритму его вычисления, называемому быстрым преобразованием Фурье (БПФ), которое было известно Гауссу (1805) и в его нынешнем виде было выявлено Кули и Такье [CT]. Пресс и др. [NR] предлагают доступное введение в преобразование Фурье и его приложения.
Поскольку дискретное преобразование Фурье разбивает входные данные на составляющие, которые вносят вклад на дискретных частотах, оно имеет множество применений в цифровой обработке сигналов, например, для фильтрации, и в этом контексте дискретизированные входные данные преобразования обычно называются сигналом, который существует во временной области. Выход называется спектром или преобразованием и существует в частотной области.
Детали реализации
Существует множество способов определения ДПФ, отличающихся знаком показателя степени, нормировкой и т. д. В этой реализации ДПФ определяется как
В общем случае ДПФ определяется для комплексных входных и выходных данных, и компонента одной частоты при линейной частоте \(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).
Обратное ДПФ определяется как
Он отличается от прямого преобразования знаком аргумента показательной функции и нормировкой по умолчанию на \(1/n\).
Преобразование типов
numpy.fft преобразует float32 и complex64 массивы в float64 и complex128 массивы соответственно. Для реализации БПФ, которая не преобразует входные массивы, см. 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 входных точек.
Соответственно, когда спектр чисто действительный, сигнал является эрмитовым. Семейство функций hfft использует эту симметрию, используя n/2+1 комплексных точек во входной (временной) области для n действительных точек в частотной области.
В более высоких измерениях Фурье-преобразования используются, например, для анализа и фильтрации изображений. Вычислительная эффективность Фурье-преобразования означает, что оно также может быть более быстрым способом вычисления больших сверток, используя свойство, что свертка во временной области эквивалентна точечному умножению в частотной области.
Более высокие измерения
В двух измерениях ДПФ определяется как
что очевидным образом распространяется на более высокие измерения, и обратные преобразования в более высоких измерениях также распространяются аналогичным образом.
Ссылки
Кули, Джеймс У., и Джон У. Такер, 1965, «Алгоритм для машинного вычисления комплексных рядов Фурье», Math. Comput. 19: 297-301.
Пресс, У., Теукольский, С., Веттерин, У.Т., и Флэннери, Б.П., 2007, Числовые рецепты: Искусство научных вычислений, гл. 12-13. Изд-во Кембриджского университета, Кембридж, Великобритания.
Примеры
Примеры см. в соответствующих функциях.
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/routines.fft.html