文 献 综 述
一、课题背景
离散傅里叶变换(DFT)是数字信号处理领域最为常见的处理方法,也是数字信号处理的核心,可以实现信号的分析与利用。其目的是将信号从时域变换到频域,从而在频域更方便地处理信息。本文研究的滑动DFT算法(SDFT)为诸多算法之一,采用基于DSP的滑窗FFT算法进行实现。
以往FFT这类算法的设计思想主要是减少复乘的次数,但在某些信号处理的实际应用领域,要求在频域上对离散信号进行连续的分析,分析不同时刻其输入样本对应的频谱,提高算法的并行度和使之模块化,满足实时处理的要求。例如,对于一个数据序列,在已有一次FFT计算结果的基础上,要对一个新的数据求解其频谱信息,传统DFT是将之前所有的数据再做一次FFT运算,而SDFT则直接可以在现有数据结果上进行运算。SDFT算法由此应运而生,这就相当于用一个固定长度随时间滑动的滑动窗口来选择样本。这种在一个滑动窗口内计算N点DFT的算法称为滑动DFT算法。
二、算法原理
滑窗DFT原理如下图所示:
图1
图1阐明了在某一时刻内长度为N的窗内的N点DFT,这是传统DFT在用长度为N点的窗口进行截取并计算的过程,SDFT算法的计算过程则此基础上进行计算。
传统FFT针对某一时刻,必须计算出所有时刻的频谱;计算下一个时刻的频谱时,则要再进行一次FFT运算,两次运算互相独立,并无关联,这样的计算过程极浪费时间,效率低下。而实际上,仔细观察,我们不难发现,两次计算的窗口样本有着很大的相似性后一个时刻的样本只是将前一个样本的第一个输入舍弃,而在最后添加一个新的样本;而如果两个时刻相距不远,则后一个时刻的样本只是将前一个时刻的样本中前几个输入舍去,然后再最后添加几个新的样本。所以,相邻的一个或几个时刻的窗口中德样本只有一个或几个不相同。因其时域中有如此关联,则其频域中必然会有一定的联系。从而实时频谱分析就可以以此为依据,每个新的DFT就可以由前一个或几个DFT直接求得,下面是SDFT算法的推导过程:
离散时间信号的DFT变换:
