【DSP数字信号处理整理笔记】——DFT离散傅里叶变换分析 1

一、DFT与DTFT的区别和联系

首先,DFT和DTFT到底有什么区别呢?—— 首先,虽然DTFT是针对离散时间非周期信号的,但是它的频谱依然是连续的,这仍然不利于计算机的计算。那么DFT的特点就是:时域信号是离散的;同时在频域上也是离散的。

而要想使得频域是离散的,也就是需要对DTFT所得的连续频域进行采样。而在信号与系统中我们已经建立了这样一个认识:时域离散,那么频域就会是周期的;如果频域是离散的,那么时域就是周期的。

那么由于刚刚我们说DFT需要对DTFT所得频谱进行采样,所以这将会导致在时域上原本的离散时间非周期信号做了周期延拓。不过没有关系,我们最后还是只取一个周期分析即可。

那么具体怎么采样?怎么延拓呢?对于一个N点DFT,因为DTFT的频谱是以 2 π 2π 2π为周期的,那么我们就以: ω = 2 π N k ω = \frac{2π}{N}k ω=N2πk对频谱进行采样。时域上, x [ n ] x[n] x[n] 就以N为周期做周期延拓。

下图就展示了DTFT和DFT的区别:
在这里插入图片描述


如果我们设DTFT的时频域信号分别表示为: x [ n ] , X ( e j ω ) x[n], X(e^{jω}) x[n],X(ejω),DFT的的时频域信号表示为: y [ n ] , Y [ k ] y[n], Y[k] y[n],Y[k],那么他们之间的相互联系如下图所示:

在这里插入图片描述

x [ n ] , y [ n ] x[n] , y[n] x[n],y[n]之间的相互转化已经比较清晰了,下面我们再看看 X ( e j ω ) , Y [ k ] X(e^{jω}), Y[k] X(ejω),Y[k]之间如何转换:

  1. 数值逼近法
    因为我们知道 Y [ k ] Y[k] Y[k]仅仅是 X ( e j ω ) X(e^{jω}) X(ejω) 是一些频率样本,而 Y [ k ] Y[k] Y[k] y [ n ] y[n] y[n] 的N点DFT,那么我们可以这么做——首先在 y [ n ] y[n] y[n] 序列后面补若干个0,使之成为一个长度为M的序列( M > > N M>>N M>>N),接下来,对这个更长的序列做 DFT,这样可以去逼近DTFT。

值得注意的是:N越大,频率分辨率越高,但是并不是N越大越好,对于原本具有周期性的信号,如果N不是周期的整数倍,就会出现频率模糊现象。
例如原本周期是64的信号,如果分别用N=128和N=129,那么经过周期延拓就会出现这种情况:
在这里插入图片描述
我们可以看到N=129时,出现了不连续点,这将会引入新的频率分量,因此他们两个分别做DFT的结果如下:
在这里插入图片描述

  1. 另外一种方法就是插值。如果在每一个采样点插一个sinc函数,就类似于信号与系统中采样值的恢复。

二、DFT的性质

【1】线性
【2】圆周时移: x [ < n − n 0 > N ]   D F T ↔   X [ k ] W N k n 0 x[<n - n_0 >_N ] \space \underleftrightarrow{DFT} \space X[k]W_N^{kn_0} x[<nn0>N]  DFT X[k]WNkn0
【3】圆周频移: x [ n ] W N − k 0 n   F ↔   X [ < k − k 0 > N ] x[n]W_N^{-k_0n}\space \underleftrightarrow{\mathscr{F}} \space X[<k - k_0>_N] x[n]WNk0n  F X[<kk0>N]
【4】对偶性: X [ n ]   F ↔   N x [ < − k > N ] X[n] \space \underleftrightarrow{\mathscr{F}} \space Nx[<-k>_N] X[n]  F Nx[<k>N]
【5】圆周卷积定理: x [ n ] ⨂ h [ n ]   F ↔   X [ k ] H [ k ] x[n]⨂h[n] \space \underleftrightarrow{\mathscr{F}} \space X[k]H[k] x[n]h[n]  F X[k]H[k]

这里我们证明一下圆周卷积定理:我们设: x [ n ] ⨂ h [ n ] = y [ n ] x[n]⨂h[n]=y[n] x[n]h[n]=y[n],下面有: Y [ k ] = ∑ n = 0 N − 1 y [ n ] W N k n = ∑ n = 0 N − 1 [ ∑ m = 0 N − 1 x [ m ] h [ < n − m > N ] ] W N k n = ∑ m = 0 N − 1 x [ m ] ∑ n = 0 N − 1 h [ < n − m > N ] W N k n \begin{aligned} Y[k] &= \sum_{n=0}^{N-1}y[n]W_N^{kn}\\ &=\sum_{n=0}^{N-1}[\sum_{m=0}^{N-1}x[m]h[<n-m>_N]]W_N^{kn}\\ &=\sum_{m=0}^{N-1}x[m]\sum_{n=0}^{N-1}h[<n-m>_N]W_N^{kn}\\ \end{aligned} Y[k]=n=0N1y[n]WNkn=n=0N1[m=0N1x[m]h[<nm>N]]WNkn=m=0N1x[m]n=0N1h[<nm>N]WNkn
下面,我们令: n − m = l + r N n-m=l+rN nm=l+rN,因为 m , n m, n m,n都是从0开始的,所以相当于 l , r l, r l,r 都是从0开始。 n = m + l + r N n=m+l+rN n=m+l+rN从0开始也就相当于 l l l 从0开始。而: < n − m > N = < l + r N > N = l <n-m>_N=<l+rN>_N=l <nm>N=<l+rN>N=l。所以带入得: Y [ k ] = ∑ m = 0 N − 1 x [ m ] ∑ l = 0 N − 1 h [ l ] W N k ( m + l + r N ) = ∑ m = 0 N − 1 x [ m ] W N k m ∑ l = 0 N − 1 h [ l ] W N k l = X [ k ] H [ k ] \begin{aligned} Y[k]=\sum_{m=0}^{N-1}x[m]\sum_{l=0}^{N-1}h[l]W_N^{k(m+l+rN)}= \sum_{m=0}^{N-1}x[m]W_N^{km}\sum_{l=0}^{N-1}h[l]W_N^{kl}=X[k]H[k] \end{aligned} Y[k]=m=0N1x[m]l=0N1h[l]WNk(m+l+rN)=m=0N1x[m]WNkml=0N1h[l]WNkl=X[k]H[k]

特别值得注意的是复序列DFT里的对称性
【1】 x [ n ] ∗   D F T ↔   X ∗ [ < − k > N ] x[n]^* \space \underleftrightarrow{DFT} \space X^*[<-k>_N] x[n]  DFT X[<k>N]
反过来也是类似的结论:【2】 x ∗ [ < − n > N ]   D F T ↔   X ∗ [ k ] x^*[<-n>_N] \space \underleftrightarrow{DFT} \space X^*[k] x[<n>N]  DFT X[k]
由于我们知道在DTFT里面有频谱实部虚部和时域序列奇部偶部的关系,我们在DFT中引入共轭对称部分与共轭反对称部分:

2.1 复序列相关特性

对于一个N点的复序列,我们定义圆周共轭对称为: x [ n ] = x ∗ [ < − n > N ] x[n] = x^*[<-n>_N] x[n]=x[<n>N]
定义圆周共轭反对称为: x [ n ] = − x ∗ [ < − n > N ] x[n] = -x^*[<-n>_N] x[n]=x[<n>N]
而对于任意一个N点复序列,我们都可以拆分为圆周共轭对称和圆周共轭反对称部分(类似于实序列可以拆分为奇部和偶部一样)

x p c s = x [ n ] + x ∗ [ < − n > N ] 2 x p c a = x [ n ] − x ∗ [ < − n > N ] 2 \quad\\ x_{pcs} = \frac{x[n] +x^*[<-n>_N] }{2}\\ \quad \\ x_{pca} = \frac{x[n] -x^*[<-n>_N] }{2} xpcs=2x[n]+x[<n>N]xpca=2x[n]x[<n>N]

那么,就类似于傅里叶变换里面偶部的CTFT是傅里叶变换的实部一样,我们也有: x p c s [ n ]   F ↔   R e X [ k ] x p c a [ n ]   F ↔   j I m X [ k ] x_{pcs}[n] \space \underleftrightarrow{\mathscr{F}} \space Re{X[k]}\\ \quad\\ x_{pca}[n] \space \underleftrightarrow{\mathscr{F}} \space jIm{X[k]} xpcs[n]  F ReX[k]xpca[n]  F jImX[k]

而有趣的是:反过来也是OK的:
R e { x [ n ] }   F ↔   X p c s [ k ] j I m { x [ n ] }   F ↔   X p c a [ k ] Re\{x[n]\} \space \underleftrightarrow{\mathscr{F}} \space X_{pcs}[k]\\ \quad\\ jIm\{x[n]\} \space \underleftrightarrow{\mathscr{F}} \space X_{pca}[k] Re{x[n]}  F Xpcs[k]jIm{x[n]}  F Xpca[k]

2.2 实序列相关特性

这个大家在信号与系统中都已经清楚了:实信号的偶部的DFT就是 X [ k ] X[k] X[k]的实部;实信号的奇部的DFT就是 X [ k ] X[k] X[k] 的虚部。

2.3. DFT与线性卷积

我们都知道:线性卷积是一件非常麻烦的事情;那么我们能都利用DFT去实现线性卷积呢?
在这里插入图片描述

总结一下:一个 M 长的序列和一个 N 长的序列的线性卷积,我们可以这样做:

  1. 将M长的序列尾部补0补长至:M + N -1。记为: h 1 ( n ) h_1(n) h1(n)
  2. 将 N 长的序列尾部补0补长至:M + N - 1。记为: h 2 ( n ) h_2(n) h2(n)
  3. 分别对 h 1 ( n ) h_1(n) h1(n) h 2 ( n ) h_2(n) h2(n) 做DFT,得: H 1 [ k ] , H 2 [ k ] H_1[k], H_2[k] H1[k],H2[k]
  4. 两者相乘,得到: G [ k ] = H 1 [ k ] H 2 [ k ] G[k] = H_1[k]H_2[k] G[k]=H1[k]H2[k]
  5. G [ k ] G[k] G[k] 做 IDFT ,得到原本序列得线性卷积结果。

2.4. 如何由一个N点DFT计算2个实序列的N点DFT?

【问题】:我们现在有两个 N 长的实序列 g [ n ] , h [ n ] g[n], h[n] g[n],h[n],如果只用一次 N 点 DFT 同时计算出它们两个的 N 点DFT呢?

—— 方法很简单,首先,我们将这两个序列构成一个复数序列,即: x [ n ] = g [ n ] + j h [ n ] x[n] = g[n] + jh[n] x[n]=g[n]+jh[n]

接下来,我们就只对这个 X [ n ] X[n] X[n] 做 N 点DFT ,然后我们根据下面的性质得到实部和虚部的 DFT: R e { x [ n ] } = g [ n ]   D F T ↔   X [ k ] + X ∗ [ < − k > N ] 2 I m { x [ n ] } = h [ n ]   D F T ↔   X [ k ] − X ∗ [ < − k > N ] 2 j \quad\\ Re\{x[n]\} = g[n] \space \underleftrightarrow{DFT} \space \frac{X[k] + X^*[<-k>_N]}{2}\\ \quad\\ Im\{x[n]\} = h[n] \space \underleftrightarrow{DFT} \space \frac{X[k] - X^*[<-k>_N]}{2j} Re{x[n]}=g[n]  DFT 2X[k]+X[<k>N]Im{x[n]}=h[n]  DFT 2jX[k]X[<k>N]

2.5 对DTFT进行N点抽样

问题: x [ n ] x[n] x[n] 是一个长度为 M 的序列,对 x [ n ] x[n] x[n]的DTFT进行N点抽样,对这个频域抽样之后的信号做 IDTFT,还能不能恢复出原来的 x [ n ] x[n] x[n]

—— 答案是:如果 N ≥ M N ≥M NM ,那么可以,否则不可以。我们想啊:对 DTFT结果做 N 点采样,也就是相当于在时域上把 x [ n ] x[n] x[n] 以 N 为周期做周期延拓,那么显然如果延拓的距离太窄,就会发生混叠而无法恢复原来的信号。

【补充】:关于对DTFT抽样,看似简单,但有时候考试的时候可能就硬是会没想起来相关的性质,所以这里博主补充一下:对一个序列 x [ n ] x[n] x[n] 的DTFT 进行 N 点的抽样,抽样的结果 Y [ k ] Y[k] Y[k] 就相当于对 x [ n ] x[n] x[n] 做 DFT 了。那么 Y [ k ] Y[k] Y[k] 的 IDFT 就可以通过下面的公式得到: y [ n ] = ∑ m = − ∞ + ∞ x [ n + m N ] 0 ≤ n ≤ N − 1 y[n] = \sum_{m=-∞}^{+∞}x[n+mN]\quad 0≤n≤N-1 y[n]=m=+x[n+mN]0nN1

比如下面这个例子:
在这里插入图片描述

显然, x [ n ] x[n] x[n] 的 4点DFT就是 Y[k] 了。那么套用上面的公式,应有: y [ n ] = x [ n + 4 ] + x [ n ] + x [ n − 4 ] 0 ≤ n ≤ 3 y[n] = x[n+4]+x[n]+x[n-4]\quad 0≤n≤3 y[n]=x[n+4]+x[n]+x[n4]0n3
那么我们看看各自平移的结果:

平移结果
x [ n ] x[n] x[n]0,1,2,3,4,5
x [ n − 4 ] x[n-4] x[n4]0,0,0,0,0,1
x [ n + 4 ] x[n+4] x[n+4]4,5,0,0,0,0

所以他们三者相加得到的序列是: 4 , 6 , 2 , 3 , 4 , 6... 4,6,2,3,4,6... 4,6,2,3,4,6...
那么在 n 取0-3时,就可以得到 y [ n ] = { 4 , 6 , 2 , 3 } y[n]=\{4,6,2,3\} y[n]={4,6,2,3}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值