离散信号 x ( n ) x(n) x(n) 可以表示为连续模拟信号的采样,即
x ( n ) = x a ( t ) ∣ t = n T s x(n) = x_{a}(t)|_{t=nT_s} x(n)=xa(t)∣t=nTs
其中 x a ( t ) x_a(t) xa(t) 是模拟信号, t t t 代表时间, T s T_s Ts 代表采样周期。
序列 x ( n ) x(n) x(n) 的DTDT 可以表示为
X ( w ) = ∑ n = − ∞ + ∞ x ( n ) e − j w n X(w)=\sum_{n=-\infty}^{+\infty}{x(n)e^{-jwn}} X(w)=n=−∞∑+∞x(n)e−jwn
x ( n ) = 1 2 π ∫ − π π X ( w ) e j w n d w x(n)=\frac{1}{2\pi}\int_{-\pi}^{\pi}X(w)e^{jwn}dw x(n)=2π1∫−ππX(w)ejwndw
其中逆变换仍为积分表达式。
根据DTFT的定义,通过数学推导(积分变换)可以得到DTFT的特性
特性 | 时域 | 频域 |
---|---|---|
线性 | a 1 x 1 ( n ) + a 2 x 2 ( n ) a_1x_1(n) + a_2x_2(n) a1x1(n)+a2x2(n) | a 1 X 1 ( w ) + a 2 X 2 ( w ) a_1X_1(w) + a_2X_2(w) a1X1(w)+a2X2(w) |
时移 | x ( n − n 0 ) x(n-n_0) x(n−n0) | e − j w n 0 X ( w ) e^{-jwn_0}X(w) e−jwn0X(w) |
频移 | e − j w 0 n x ( n ) e^{-jw_0n}x(n) e−jw0nx(n) | X ( w − w 0 ) X(w-w_0) X(w−w0) |
相乘 | x 1 ( n ) x 2 ( n ) x_1(n)x_2(n) x1(n)x2(n) | X 1 ( w ) ∗ X 2 ( w ) X_1(w)*X_2(w) X1(w)∗X2(w) |
卷积 | x 1 ( n ) ∗ x 2 ( n ) x_1(n)*x_2(n) x1(n)∗x2(n) | X 1 ( w ) X 2 ( w ) X_1(w)X_2(w) X1(w)X2(w) |
最重要的一条特性就是时域的卷积等于频域的DTFT相乘,证明如下。
卷积(线性)定义:
x 1 ( n ) ∗ x 2 ( n ) = ∑ m = − ∞ ∞ x 1 ( m ) x 2 ( n − m ) x_1(n)* x_2(n)=\sum_{m=-\infty}^{\infty}x_1(m)x_2(n-m) x1(n)∗x2(n)=∑m=−∞∞x1(m)x2(n−m)
证明:
D F T F ( x 1 ( n ) ∗ x 2 ( n ) ) = ∑ n = − ∞ ∞ x 1 ( n ) ∗ x 2 ( n ) e − j w n = ∑ n = − ∞ ∞ ∑ m = − ∞ ∞ x 1 ( m ) x 2 ( n − m ) e − j w n = ∑ m = − ∞ ∞ x 1 ( m ) e − j w m ∑ n = − ∞ ∞ x 2 ( n − m ) e − j w ( n − m ) = X 1 ( w ) X 2 ( w ) DFTF(x_1(n) * x_2(n))=\sum_{n=-\infty}^{\infty}x_1(n)* x_2(n)e^{-jwn}\\=\sum_{n=-\infty}^{\infty}\sum_{m=-\infty}^{\infty}x_1(m)x_2(n-m)e^{-jwn}\\=\sum_{m=-\infty}^{\infty}x_1(m)e^{-jwm}\sum_{n=-\infty}^{\infty}x_2(n-m)e^{-jw(n-m)}\\=X_1(w)X_2(w) DFTF(x1(n)∗x2(n))=∑n=−∞∞x1(n)∗x2(n)e−jwn=∑n=−∞∞∑m=−∞∞x1(m)x2(n−m)e−jwn=∑m=−∞∞x1(m)e−jwm∑n=−∞∞x2(n−m)e−jw(n−m)=X1(w)X2(w)
因为DFT的时域和频域变换都是离散的表达式(无积分),故DFT少了中间的一个用来强调只有时间离散的T(time)。
DTFT的时域信号表达式是离散频率的连续函数(积分),不利于我们的应用计算,且实际使用时一般只用N个(有限)点的采样进行计算,因此我们可以使用N个点在频域进行采样,得到DFT表达式。
X ( k ) = ∑ n = 0 n = N − 1 x ( n ) e − j w n N k , 0 < = k < = N − 1 X(k)=\sum_{n=0}^{n=N-1}x(n)e^{-\frac{jwn}{N}k},0<=k<=N-1 X(k)=n=0∑n=N−1x(n)e−Njwnk,0<=k<=N−1
x ( n ) = 1 N ∑ k = 0 k = N − 1 X ( k ) e − j w n N k , 0 < = n < = N − 1 x(n)=\frac{1}{N}\sum_{k=0}^{k=N-1}X(k)e^{-\frac{jwn}{N}k},0<=n<=N-1 x(n)=N1k=0∑k=N−1X(k)e−Njwnk,0<=n<=N−1
其中 e − j w n N e^{-\frac{jwn}{N}} e−Njwn 是序列中的基频, e − j w n N k e^{-\frac{jwn}{N}k} e−Njwnk 是 k k k 次谐波分量,全部谐波分量中只有 N N N 个独立的分量,因为
e − j w n N ( k + N ) = e − j w n N k e^{-\frac{jwn}{N}(k+N)} = e^{-\frac{jwn}{N}k} e−Njwn(k+N)=e−Njwnk
FFT和DFT计算结果是一样的,只是利用了DFT计算的重叠部分进行了优化,使得计算效率提高了 N l o g 2 N \frac{N}{log_2{N}} log2NN 倍,当N越大时,效率提高的越多,以语音中常用的 N = 512 N=512 N=512 为例,提高了56.9倍。
DFT特性大部分和DTFT相同,但卷积定理方面不一样,DFT的时域圆周卷积等于频域乘积,而不是卷积。但大部分应用中我们用到比较多的是卷积,而不是圆周卷积,但在一定条件下圆周卷积和卷积相等。
前面介绍的DFT和DTFT都适用于统计平稳的信号,不适用于像语音这样的非平稳信号,为此引入STFT,将语音信号分成几十毫秒(一般为32ms)一帧的信号,每一帧近似是平稳的信号,然后每一帧进行DFT变换。
X ( n , w ) = ∑ n = − ∞ n = ∞ x ( m ) w ( n − m ) e − j w m X(n,w)=\sum_{n=-\infty}^{n=\infty}x(m)w(n-m)e^{-jwm} X(n,w)=n=−∞∑n=∞x(m)w(n−m)e−jwm
其中 x ( m ) x(m) x(m) 是输入信号, w ( m ) w(m) w(m) 是分析窗,分析窗具有重要的作用,特别是在STFT的分析合成中。
STFT变换具有两种解释,每一种解释代表了一种分析综合的方法,第一种解释是,固定帧数n,就代表着加窗信号的傅里叶变换,第二种解释是,固定频率w,这就是一个滤波操作。