📜  Python|逆快速傅里叶变换

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

Python|逆快速傅里叶变换

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

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

f(t)=\frac{1}{2 \pi} \int_{-\infty}^{\infty} F(x) e^{-i x t} d x

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

Parameters : 

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

Returns : 
Fast Fourier Transform

示例 1:

# import sympy 
from sympy import ifft
  
# sequence 
seq = [15, 21, 13, 44]
  
# fft
transform = ifft(seq)
print ("Inverse FFT : ", transform)

输出:

Inverse FFT :  [93/4, 1/2 + 23*I/4, -37/4, 1/2 - 23*I/4]

示例 2:

# import sympy 
from sympy import ifft
  
# sequence 
seq = [15, 21, 13, 44]
  
decimal_point = 4
  
# fft
transform = ifft(seq, decimal_point )
print ("Inverse FFT : ", transform)

输出:

Inverse FFT :  [23.25, 0.5 + 5.75*I, -9.250, 0.5 - 5.75*I]