You are currently viewing Python | Быстрое преобразование Фурье

Python | Быстрое преобразование Фурье

Это алгоритм, который играет очень важную роль в вычислении дискретного преобразования Фурье последовательности. Он преобразует сигнал пространства или времени в сигнал частотной области.
Сигнал DFT генерируется распределением последовательностей значений на различные частотные составляющие. Работа непосредственно для преобразования с помощью преобразования Фурье слишком затратна с точки зрения вычислений. Таким образом, используется быстрое преобразование Фурье, поскольку оно быстро вычисляется путем факторизации матрицы DFT как произведения разреженных факторов. В результате это снижает сложность вычисления DFT с O(n2) до O(N log N). И это огромная разница при работе с большим набором данных. Кроме того, алгоритмы FFT очень точны по сравнению с прямым определением DFT при наличии ошибки округления.

Это преобразование представляет собой перевод из конфигурационного пространства в частотное пространство, и это очень важно с точки зрения изучения как преобразований определенных задач для более эффективных вычислений, так и при изучении спектра мощности сигнала. Этот перевод может быть от xn до Xk. Это преобразование пространственных или временных данных в данные частотной области.

sympy.discrete.transforms.fft( ) :

Он может выполнять дискретное преобразование Фурье (DFT) в сложной области.
Автоматически последовательность дополняется нулем справа, потому что радиус-2 БПФ требуется номер точки выборки в степени 2. Для коротких последовательностей используйте этот метод только с аргументами по умолчанию, так как с размером последовательности сложность выражений возрастает.

Parameters : 
-> seq : [iterable] sequence on which DFT is to be applied.
-> dps : [Integer] number of decimal digits for precision.

Returns : 
Fast Fourier Transform
# import sympy
from sympy import fft

# sequence
seq = [15, 21, 13, 44]

# fft
transform = fft(seq)
print (transform)

Выход:

FFT : [93, 2 - 23*I, -37, 2 + 23*I]
# import sympy
from sympy import fft

# sequence
seq = [15, 21, 13, 44]

decimal_point = 4

# fft
transform = fft(seq, decimal_point )
print ("FFT : ", transform)

Выход:

FFT : [93, 2.0 - 23.0*I, -37, 2.0 + 23.0*I]