旋转因子,记为 $W_N$,是DFT定义中的核心复数。它代表了复平面单位圆上的一个基本旋转角度。
$$ W_N = e^{-j\frac{2\pi}{N}} = \cos\left(\frac{2\pi}{N}\right) - j\sin\left(\frac{2\pi}{N}\right) $$在DFT的计算公式 $X[k] = \sum_{n=0}^{N-1} x[n] W_N^{kn}$ 中,它的幂 $W_N^{kn}$ 的意义是:
$$ W_N^{kn} = (e^{-j\frac{2\pi}{N}})^{kn} = e^{-j\frac{2\pi kn}{N}} $$这代表从复平面的点 (1, 0) 开始,沿着单位圆顺时针旋转 $kn$ 个大小为 $\frac{2\pi}{N}$ 的基本角度。这些旋转因子构成了DFT的正交基,用于分析信号在不同频率分量上的投影。
下图展示了当N=8时,8个基本旋转因子 $W_8^k$ 在复平面单位圆上的位置。将鼠标悬停在点上可以查看其详细信息。
线性卷积是在一条无限长的直线上进行的,而循环卷积是在一个圆周上进行的。这个几何模型是理解其特性的关键。我们可以通过以下四步来形象地理解这个过程:
以下动画直观演示了 $x[n] = \{1, 2, 2, 1\}$ 和 $h[n] = \{1, 0, 1, 0\}$ 的4点循环卷积过程。
循环卷积的数学定义为:$ y[n] = x[n] \circledast_N h[n] = \sum_{m=0}^{N-1} x[m] h[(n-m) \pmod N] $
在实际应用和考试中,我们通常有四种方法来计算它。以下以 $x[n] = \{1, 2, 2, 1\}$ 和 $h[n] = \{1, 0, 1, 0\}$ 为例。
这是最基本的方法,按照定义进行反转、移位、相乘、求和。
同理循环移位计算,最终得到 3 和 3。
基于离散卷积定理:时域的循环卷积等价于频域的乘积。即 $y[n] = \text{IDFT}( \text{DFT}(x) \cdot \text{DFT}(h) )$。
1. DFT($x$): 计算得 $X[k] = \{6, -1-j, 0, -1+j\}$
2. DFT($h$): 计算得 $H[k] = \{2, 0, 2, 0\}$
3. 点乘: $Y[k] = X[k] \cdot H[k] = \{12, 0, 0, 0\}$
4. IDFT: 由于只有直流分量 $Y[0]=12$,IDFT后平均分摊到每个点:$12/4 = 3$。
结果: $y[n] = \{3, 3, 3, 3\}$
循环卷积可以转化为一个特殊的矩阵乘法 $y = H_{circ} \cdot x$。其中矩阵 $H_{circ}$ 是通过将序列 $h[n]$ 作为第一列,后续每一列都是前一列的向下循环移位生成的。
注意矩阵的第一行是 $h[n]$ 的反转(时间反转),即 $\{1, 0, 1, 0\}$ 的反转是 $\{1, 0, 1, 0\}$ (因为 $h[1]$ 和 $h[3]$ 交换)。
$$ \begin{bmatrix} 3 \\ 3 \\ 3 \\ 3 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 0 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 2 \\ 2 \\ 1 \end{bmatrix} $$例如第一行计算:$1\cdot1 + 0\cdot2 + 1\cdot2 + 0\cdot1 = 1 + 2 = 3$。
这是手动计算最快的方法。循环卷积等于线性卷积的结果,按照长度 N 进行分段并叠加。
| 索引 | 0 | 1 | 2 | 3 |
| 主段 | 1 | 2 | 3 | 3 |
| 尾段(+) | 2 | 1 | 0 | 0 |
| 结果 | 3 | 3 | 3 | 3 |
线性卷积可以想象成一个序列反转后,在另一个序列上“滑窗相乘求和”的过程。其结果的长度为 $L = N_1 + N_2 - 1$。
对于 $x[n] = \{1, 2, 2, 1\}$ 和 $h[n] = \{1, 0, 1, 0\}$,结果长度为 $L = 4+4-1=7$。表格法可以清晰地展示每一步的计算:
| $x[m]$ | 1 | 2 | 2 | 1 | ||||||
| $h[-m]$ (反转) | ... | 0 | 1 | 0 | 1 | ... | ||||
| 计算步骤 | 序列 $h[n-m]$ (滑动) | y[n] | ||||||||
| $y[0]$ | ... | 1 | 0 | 1 | 0 | ... | $1 \times 1 = 1$ | 1 | ||
| $y[1]$ | ... | 1 | 0 | 1 | 0 | ... | $1 \times 0 + 2 \times 1 = 2$ | 2 | ||
| $y[2]$ | ... | 1 | 0 | 1 | 0 | ... | $1 \times 1 + 2 \times 0 + 2 \times 1 = 3$ | 3 | ||
| $y[3]$ | ... | 1 | 0 | 1 | 0 | ... | $1 \times 0 + 2 \times 1 + 2 \times 0 + 1 \times 1 = 3$ | 3 | ||
| $y[4]$ | ... | 1 | 0 | 1 | 0 | $2 \times 0 + 2 \times 1 + 1 \times 0 = 2$ | 2 | |||
| $y[5]$ | ... | 1 | 0 | 1 | $2 \times 0 + 1 \times 1 = 1$ | 1 | ||||
| $y[6]$ | ... | 1 | 0 | $1 \times 0 = 0$ | 0 | |||||
| 卷积类型 | 结果序列 | 长度 |
|---|---|---|
| 4点循环卷积 | {3, 3, 3, 3} | 4 |
| 线性卷积 | {1, 2, 3, 3, 2, 1, 0} | 7 |
我们在“方法四”中提到,循环卷积是线性卷积的周期延拓叠加。下图再次直观验证了这一结论:线性卷积的尾部“卷绕”回来与头部相加,正是循环卷积的结果。