离散傅里叶变换(DFT)的原理与特性
立即解锁
发布时间: 2025-08-20 02:33:07 阅读量: 4 订阅数: 12 


数字信号处理入门:理论与实践
# 离散傅里叶变换(DFT)的原理与特性
离散傅里叶变换(DFT)在信号处理领域有着至关重要的地位,它能够将时域信号转换为频域信号,帮助我们更好地理解信号的频率特性。下面将详细介绍DFT的相关知识。
## 1. DFT的基本概念与计算
### 1.1 DFT的矩阵表示
DFT可以用矩阵 - 向量乘积的形式表示:
\[
\begin{bmatrix}
X[0] \\
X[1] \\
X[2] \\
\vdots \\
X[N - 1]
\end{bmatrix}
=
\begin{bmatrix}
1 & 1 & 1 & \cdots & 1 \\
1 & e^{-j2\pi/N} & e^{-j4\pi/N} & \cdots & e^{-j2(N - 1)\pi/N} \\
1 & e^{-j4\pi/N} & e^{-j8\pi/N} & \cdots & e^{-j4(N - 1)\pi/N} \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
1 & e^{-j2(N - 1)\pi/N} & e^{-j4(N - 1)\pi/N} & \cdots & e^{-j2(N - 1)(N - 1)\pi/N}
\end{bmatrix}
\times
\begin{bmatrix}
x[0] \\
x[1] \\
x[2] \\
\vdots \\
x[N - 1]
\end{bmatrix}
\]
### 1.2 MATLAB中DFT的计算
在MATLAB中,可以使用`dftmtx(N)`函数获取$N×N$的DFT矩阵,然后通过矩阵 - 向量乘积计算DFT:`X = dftmtx(N)*x`,其中`x`是信号样本向量,`X`是DFT系数向量。不过,使用`X = fft(x, N)`语句计算向量的DFT效率更高。
### 1.3 IDFT的矩阵表示与验证
IDFT同样可以表示为矩阵 - 向量乘积。可以写出$N×N$ IDFT矩阵的典型元素,然后使用MATLAB创建一个$6×6$的IDFT矩阵。通过在MATLAB中用IDFT矩阵乘以DFT矩阵来验证结果,预期结果应为单位矩阵。这是因为DFT和IDFT是互逆的变换,它们的矩阵乘积应该是单位矩阵,保证信号能够从频域准确还原到时域。
## 2. DFT的特性
### 2.1 DFT系数的周期性
DFT系数$X[k]$具有周期性,周期为$N$,即$X[k] = X[k + N]$,$-\infty < k < \infty$。这是因为DFT是对离散时间傅里叶变换(DTFT)的频率采样,而DTFT具有$2\pi$的周期性。当需要$X[k]$在区间$0\leq k < N$之外的值时,可以利用其周期性进行扩展,无需额外的计算成本。例如,$X[N] = X[0]$,$X[N + 1] = X[1]$等。
### 2.2 负频率与DFT
DFT和IDFT公式使用非负索引,这在计算和数学表达上很方便,但IDFT合成公式似乎只有正频率。然而,在绘制离散时间信号的频谱图时,我们期望看到正、负频率线以及实信号的共轭对称性。因此,需要重新解释DFT索引以获得共轭对称的频谱图。
信号的归一化频率$\hat{\omega}_k = (2\pi/N)k$在$0\leq\hat{\omega} < 2\pi$范围内有$N$个等间隔的值,可以分为两个子集:
- $0\leq(2\pi/N)k < \pi$,对应$0\leq k < N/2$;
- $\pi\leq(2\pi/N)k < 2\pi$,对应$N/2\leq k\leq N - 1$。
由于DTFT的周期性,第二个子集中的频率实际上是频谱中负频率的混叠。当$N$为偶数时,第二个子集中的索引$\{N/2, N/2 + 1, N/2 + 2, \cdots, N - 2, N - 1\}$是$\{-N/2, -N/2 + 1, -N/2 + 2, \cdots, -2, -1\}$的混叠。
### 2.3 DFT的共轭对称性
当信号$x[n]$为实信号时,DTFT具有共轭对称性,因此DFT系数也满足$X[-k] = X^*[k]$。结合$X[k]$的周期性,可以得到$X[N - k] = X^*[k]$,$k = 0, 1, \cdots, N - 1$。例如,在一个4点DFT中,频率索引对应的频率为$\hat{\omega}_k = \{0, \pi/2, \pi, 3\pi/2\}$,其中$\hat{\omega}_3 = 3\pi/2$是$\hat{\omega} = -\pi/2$的混叠,DFT系数满足共轭对称特性,如$X[1] = X^*[4 - 1] = X^*[3]$。
### 2.4 $X[N/2]$的模糊性
当DFT长度$N$为偶数时,$k = N/2$对应的归一化频率为$\hat{\omega} = \pi$,由于频谱的周期性,$\hat{\omega} = \pm\pi$处的频谱值相同。在绘制频谱图时,需要决定将$X[N/2]$放在正频率侧还是负频率侧。MATLAB的`fftshift`函数将$X[N/2]$放在开头,使其对应$\hat{\omega} = -\pi$。可以证明,当向量$x[n]$为实信号且DFT长度$N$为偶数时,DFT系数$X[N/2]$必须为实值。
### 2.5 频域采样与插值
为了绘制平滑的DTFT频谱图,需要非常精细的频率采样。DFT默认变换长度与信号长度$L$相同,$L$点DFT计算$\hat{\omega} = (2\pi/L)k$处的DTFT样本。如果需要更精细的频率采样间隔$(2\pi/N)$($N > L$),可以使用零填充的方法。定义长度为$N$的信号$h_{zp}[n]$为:
\[
h_{zp}[n] =
\begin{cases}
h[n] & n = 0, 1, \cdots, L - 1 \\
0 & n = L, L + 1, \cdots, N - 1
\end{cases}
\]
对$h_{zp}[n]$进行$N$点DFT,得到的结果是在$\hat{\omega}_k = 2\pi k/N$处的频率响应样本。在特殊情况下,当$N = 2L$时,偶数索引的样本与$L$点DFT的值相同,奇数索引的频率对应于在$L$点DFT样本之间评估频率响应,即$2L$点DFT对$L$点DFT进行插值。通过增加零填充的数量,可以生成更密集的频率网格,用于在绘图前评估频率响应。在$N \to \infty$的
0
0
复制全文
相关推荐









