📜  Python|快速傅里叶变换

📅  最后修改于: 2022-05-13 01:54:21.316000             🧑  作者: Mango

Python|快速傅里叶变换

它是一种算法,在序列的离散傅里叶变换计算中起着非常重要的作用。它将空间或时间信号转换为频域信号。
DFT信号是通过将值序列分布到不同频率分量而产生的。直接在傅里叶变换上进行转换在计算上过于昂贵。因此,使用快速傅里叶变换,因为它通过将 DFT 矩阵分解为稀疏因子的乘积来快速计算。因此,它将 DFT 计算复杂度从 O(n 2 ) 降低到 O(N log N)。在处理大型数据集时,这是一个巨大的差异。此外,在存在舍入误差的情况下,与直接定义 DFT 相比,FFT 算法非常准确。

这种转换是从配置空间到频率空间的转换,这对于探索某些问题的转换以实现更有效的计算和探索信号的功率谱非常重要。这种翻译可以是从 x n到 X k 。它将空间或时间数据转换为频域数据。

sympy.discrete.transforms.fft():

它可以在复域中执行离散傅里叶变换(DFT)。
序列自动向右填充零,因为基数 2 FFT要求样本点数为 2 的幂。对于短序列,仅使用带有默认参数的此方法,因为序列的大小会增加表达式的复杂性.

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

Returns : 
Fast Fourier Transform

示例 1:

# 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]


示例 2:

# 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]