1、数字信号处理,电器信息工程学院 蔡超峰,引 言,引 言,DFT 的定义:,周期延拓,DFS,DFT,DFT 与其 DTFT 之间的关系:上式表明,N 点序列的 N 个 DFT 系数等于它的 DTFT 在 0,2)的 区间上的 N 个等间隔样本值。,引 言,DFT,DTFT,引 言,DFT 的性质:,线性性质 卷积性质时移性质对称性质,引 言,DFT 相关定理:其中 DFT 帕什瓦尔定理:,第六章 与 DFT 有关的几个问题,利用 DFT 计算线性卷积 利用 DFT 进行频谱分析 快速傅里叶变换,1. 利用 DFT 计算线性卷积,设 x1(n) 和 x2(n) 分别是长度 N1 和 N2的有限长
2、序列,y(n) 是其线性卷积,即从上式可以看出, 在区间 0 n N1+N2-2 以外,x1(m) 和 x2(n-m)中总有一个为 0,因此 y(n) 的长度为 N1+N2-1。 令 N = max(N1, N2),假设 X1 (k) 和 X2 (k) 分是 x1(n) 和 x2(n) 的 N 点 DFT 系数,根据 DFT 的时域卷积性质有其中 y(n) 称为 x1(n)和 x2(n) 的 N 点循环卷积。,循环卷积的计算:序列 x1(n) = 1,2 和 x2(n) = 1,4,3,2 , 其中N = max(N1, N2) = 4 。,1. 利用 DFT 计算线性卷积,y1(n) = 5
3、,6,11,8,循环卷积的计算:序列 x1(n) = 1,2 和 x2(n) = 1,4,3,2 , 其中N = N1+N2-1 = 5。,1. 利用 DFT 计算线性卷积,0,m,0,m,y1(n) = 1,6,11,8,4,0,m,线性卷积的计算:序列 x1(n) = 1,2 和 x2(n) = 1,4,3,2。,1. 利用 DFT 计算线性卷积,0,y(n) = 1,6,11,8,4,如果不是选取 N = max(N1, N2),而是选取N N1+N2-1,那么循环卷积就转化为线性卷积。换句话说,在 N N1+N2-1 的条件下, N 点时域循环卷积的结果将等于 x1(n) 和 x2(n
4、) 线性卷积的结果。因此,若有两个长度分别为 N1 和 N2 的有限长序列 x1(n) 和 x2(n),选取 N N1+N2-1,且假设 X1 (k) 和 X2 (k) 分是 x1(n) 和 x2(n) 的 N 点 DFT 系数,则有,1. 利用 DFT 计算线性卷积,利用 DFT 计算线性卷积流程图:图中 N N1+N2-1。,1. 利用 DFT 计算线性卷积,x1(n), N,长序列卷积的计算:设 h(n) 长度为 M 的有限长序列,x(n) 是长度不确定的序列,采用重叠相加法计算 h(n) 与 x(n) 线性卷积的步骤为: 将 x(n) 分为长度为 L 的小段分别计算每段的线性卷积 重叠
5、相加,1. 利用 DFT 计算线性卷积,y1(n),y2(n),y3(n),0,L,2L,y(n),2. 利用 DFT 进行频谱分析,对于原本就是有限长度的离散时间信号(比如某些统计数据),可以直接利用DFT精确计算它们的频谱。但是实际的连续时间信号和离散时间信号往往具有如下特征: 这些信号的持续时间通常都很长,甚至是无限长; 这些信号一般都属于随机信号,且对它们往往缺乏足够的先验信息; 如果需要对信号进行实时分析,则对分析时间有严格要求。 因此,对诸如雷达信号、通信信号和语音信号进行频谱分析时,必需首先进行A/D 转换,把它们转换为数字信号,并采用把信号截短或分段处理的方法,实现频谱分析。,
6、利用 DFT 进行频谱分析流程图:,2. 利用 DFT 进行频谱分析,“混叠效应”,“吉布斯现象”,“栅栏效应”,“频率分辨率”“补零问题” “参数选择”,回忆抽样定理:设 x(t)是一带限于 M 的连续时间信号,即有如果抽样间隔 Ts 满足则 x(t) 就能由其样本值序列x(nTs), n=0,1,2唯一地确定。,2. 利用 DFT 进行频谱分析,M,s,根据时域抽样定理,当信号 x(t) 中包含有 M 的频率成分时,抽样以后频域中就会产生混叠失真,从而产生频谱分析的误差,称为混叠效应。解决这个问题的唯一方法是让抽样频率 fs( fs = s /2)足够高,这就需要预先知道 x(t) 的最高
7、频率 fM 。在实际应用中,通常依照具体应用要求或采集设备的能力来确定,并且在选择了抽样频率 fs 以后,一般都采用抗混叠滤波器来确保无混叠现象发生。,2. 利用 DFT 进行频谱分析,XP(j),HL(j),考察矩形窗函数 r2N+1(n) 的 DTFT:,令 m=n+N,随着 N 的增加,主瓣的高度增加,宽度变窄,即主瓣向直流集中;旁瓣高度也增加,但主瓣与旁瓣的高度比不变,为 13.46dB。,2. 利用 DFT 进行频谱分析,设 x2N+1(n) 为离散时间信号 x (n) 中的一段这相当于信号 x (n) 和矩形窗函数 r2N+1(n) 相乘的结果,即用一个窗函数截取一段信号的方法通常
8、称为信号加窗,上式中的r2N+1(n) 就是对信号 x (n) 矩形加窗的结果。 假如有则根据傅里叶变换的频域卷积性质有,2. 利用 DFT 进行频谱分析,由此可见,时域上对信号矩形加窗,在频域上就是原信号的频谱与矩形窗函数的频谱做周期卷积。加窗后的频谱显然不是原信号的频谱,即频谱产生了畸变。,2,2,2,“吉布斯现象”,2. 利用 DFT 进行频谱分析,如果在时域上选用平滑的窗函数来对信号加窗,可以减轻、甚至基本消除加窗后信号频谱的过冲和起伏现象。常用的离散时间平滑窗函数有: 汉宁(Hanning)窗汉明(Hamming )窗布莱克曼(Blackman)窗,2. 利用 DFT 进行频谱分析,
9、回忆 DFT 的定义:,(周期延拓),DFS,DFT,2. 利用 DFT 进行频谱分析,DFT 可以看做是由许多窄带带通滤波器组成:,2. 利用 DFT 进行频谱分析,由此可见,N 点 DFT 系数 X(k) 只是给出了特定频率点 0、0、 20, (N-1)0 上的频谱,并没有给出这些频率点之间的频谱内容,这就好像是通过百叶窗观察窗外的景色,看到的是百叶窗缝隙内的部分景色,无法看到被百叶窗挡住的景色,这就是所谓的“栅栏效应”。 相邻频点之间的频率差为:由此可知,f 反比于信号的实际长度 T,这种定义下的分辨率又称为物理分辨率。,2. 利用 DFT 进行频谱分析,如果信号的实际长度 T 保持不
10、变,通过增加采样率的方法不能提高 f : 欲减小 f ,可以增加信号的实际长度 T 。 例题:信号 x(t) 由三个正弦信号相加组成,其频率成分 f1=2Hz, f2=2.02Hz, f3=2.07Hz,即采样频率 fs=10Hz。,2. 利用 DFT 进行频谱分析,设信号的长度 T 为25.6s,即采样点数为256,频率分辨率 f为 : 其频谱为左下图所示。设信号的长度 T 为102.4s,即采样点数为1024,频率分辨率 f为: 其频谱如右下图所示。,2. 利用 DFT 进行频谱分析,如果保持 T 不变,通过补零的方法增加序列的长度。此时 f 的值减小,但实际的频率分辨率却并没有减小,把这
11、种定义下的 f 称为计算分辨率。 例题:信号 x(t) 由三个正弦信号相加组成,其频率成分 分别是2.67Hz,3.75Hz,6.75Hz,初相分别为0,90,0,采样频率 fs=20Hz。仅取16点数据,得 x(n),n=0,1,15,求其频谱。然后在 x(n) 后补 N 个、 7N 个、 29N 个零,再分别求其频谱。,2. 利用 DFT 进行频谱分析,2. 利用 DFT 进行频谱分析,f/(Hz),f/(Hz),f/(Hz),f/(Hz),|X(ej)|,|X(ej)|,|X(ej)|,|X(ej)|,参数选择的步骤与方法: 如果已知信号 x(t) 的最高频率 fm,为了防止混叠,选定抽
12、样频率 fs 满足 fs 2fm;如果不知道信号 x(t) 的最高频率 fm,抽样频率可依照具体的应用要求或采集设备的能力选定,然后采用抗混叠滤波器防止混叠现象发生。 根据实际需要选定频率分辨率 f,然后即可确定做 DFT所需的点数 N= fs /f 。 fs 和 N 确定以后,即可确定所需信号 x(t) 的长度 T= N / fs = NTs。,2. 利用 DFT 进行频谱分析,DFT及IDFT 表达式:令,3. 快速傅里叶变换,改写为矩阵形式:,3. 快速傅里叶变换,DFT 的计算量:为了计算 N 点 DFT 需要 N2 次复数乘法和 N(N-1) 次复数加法,而每次复数乘法需要四次实数乘
13、法和两次实数加法,每次复数加法需要两次实数加法,因此实现 N 点 DFT总共需要 4N2 次实数乘法和 2N(N-1)+2N2 次实数加法。 当N=1024 时,将需要 400 多万次的实数乘法和实数加法运算!,3. 快速傅里叶变换,1965年,库利(Cooley)和图基(Tukey)首先提出后来被称为快速傅里叶变换(fast Fourier transform, FFT)的DFT快速算法。 FFT 算法的原理和依据主要有两点,第一点是充分利用 WN 因子的性质: 周期性对称性 如果 N 为偶数,则有可约性,3. 快速傅里叶变换,单位圆,利用上述 WN 因子的性质,4 点 DFT 矩阵可逐步简
14、化如下:周期性 对称性由此可见, DFT 矩阵可约简化成为大部分元素都是 1 或 -1的矩阵,且非 1 或 -1的元素有重复。随着 N 的增大,矩阵中 1 或 -1元素的比例近于指数的增长,因此将大大减小 DFT 的 计算量。,3. 快速傅里叶变换,FFT 算法原理和依据的第二点是:N 点 DFT 运算可分解为两组N/2 点 DFT 运算。 令 N=2M,M 为整数,把 N 点序列 x(n) 按照 n 为偶数和奇数分为两个 N/2 点序列 x(2r) 和 x(2r+1),而 r=0,1,N-1/2,于是有令,3. 快速傅里叶变换,则有A(k) 和 B(k)都是 N/2 点的 DFT,而 X(k
15、) 是 N 点 DFT,因此用上式表示 X(k) 并不完全,但是因为因此用A(k) 和 B(k)能够完全的表示 X(k)。 按照上述方法继续分下去,直到两点 DFT 为止:以上算法是将时间n按照奇偶分开,故称为时间抽取算法(decimation in time, DIT),3. 快速傅里叶变换,8 点 FFT 时间抽取算法信号流图:,3. 快速傅里叶变换,“级”的概念: 因为 M=log2N, 所以N 点 DFT可分为 M 级。,3. 快速傅里叶变换,m=0 m=1 m=2,蝶形单元:,3. 快速傅里叶变换,m=0 m=1 m=2,由于每一级中都含有N/2 个蝶形单元,每一个蝶形单元又只需要一次复数乘法和两次复数加法,因此,完成 M=log2N 级总共需要的复数乘法 Mm 和复数加法 Ma 分别是:对比直接计算 DFT 时所需要的复数乘法 Mm 和复数加法 Ma :,3. 快速傅里叶变换,-1,“组”的概念:第 m 级的组数是 N/2m+1,3. 快速傅里叶变换,m=0 m=1 m=2,因子的分布:第 m 级,,3. 快速傅里叶变换,m=0 m=1 m=2,3. 快速傅里叶变换,码位倒置:,000,001,010,011,100,101,110,111,000,100,010,110,001,101,011,111,