SciPy FFTpack
傅里叶变换 是对时域信号进行计算,以检查其在频域的行为。傅里叶变换在信号和噪声处理、图像处理、音频信号处理等学科中都有应用。SciPy提供了fftpack模块,它可以让用户计算快速傅立叶变换。
下面是一个正弦函数的例子,它将被用来计算fftpack模块的傅里叶变换。
快速傅立叶变换
让我们详细了解一下什么是快速傅立叶变换。
一维离散傅里叶变换
长度为N的序列x[n]的FFT y[k]由ftt()计算,反变换则由ifft()计算。让我们考虑下面的例子
上述程序将产生以下输出。
让我们看看另一个例子
上述程序将产生以下输出。
scipy.ftpack 模块可以计算快速傅里叶变换。As an illustration, a (noisy) input signal may look as follows −
我们正在创建一个时间步长为0.02秒的信号。最后一条语句打印出信号sig的大小。输出结果将如下 –
我们不知道信号的频率,我们只知道信号sig的采样时间步骤。信号应该是来自一个实数函数,所以傅里叶变换将是对称的。 scipy.ftpack.ftfreq() 函数将生成采样频率, scipy.ftpack.ft() 将计算出快速傅里叶变换。
让我们在一个例子的帮助下理解这一点。
上述程序将产生以下输出。
离散余弦变换
离散余弦变换(DCT) 用不同频率振荡的余弦函数之和来表达数据点的有限序列。SciPy提供了一个DCT的函数 dct 和一个相应的IDCT的函数 idct。 让我们考虑下面的例子。
上述程序将产生以下输出。
反离散余弦变换从其离散余弦变换(DCT)系数重建一个序列。idct函数是dct函数的逆函数。让我们通过下面的例子来理解这一点。
上述程序将产生以下输出。