左侧:N=4 DFT 矩阵计算

对于 N=4 的离散傅里叶变换 (DFT),其计算公式为:

$$ X[k] = \sum_{n=0}^{3} x[n] \cdot W_{4}^{kn}, \quad k = 0, 1, 2, 3 $$

其中,扭转因子 $W_N^k = e^{-j\frac{2\pi k}{N}}$。对于 $N=4$:

$$ W_4 = e^{-j\frac{2\pi}{4}} = e^{-j\frac{\pi}{2}} = \cos\left(-\frac{\pi}{2}\right) + j\sin\left(-\frac{\pi}{2}\right) = -j $$

1. 构建DFT矩阵 ($\mathbf{W}$)

矩阵元素 $W[k,n] = W_4^{kn}$。基于 $W_4^0=1, W_4^1=-j, W_4^2=-1, W_4^3=j$,可得4x4的DFT矩阵:

$$ \mathbf{W} = \begin{bmatrix} W_4^0 & W_4^0 & W_4^0 & W_4^0 \\ W_4^0 & W_4^1 & W_4^2 & W_4^3 \\ W_4^0 & W_4^2 & W_4^4 & W_4^6 \\ W_4^0 & W_4^3 & W_4^6 & W_4^9 \end{bmatrix} = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -j & -1 & j \\ 1 & -1 & 1 & -1 \\ 1 & j & -1 & -j \end{bmatrix} $$

2. 矩阵乘法计算

给定输入序列 $\mathbf{x} = [1, 2, 3, 4]^T$,计算 $\mathbf{X} = \mathbf{W} \cdot \mathbf{x}$。

$$ \begin{bmatrix} X[0] \\ X[1] \\ X[2] \\ X[3] \end{bmatrix} = \begin{bmatrix} 1 & 1 & 1 & 1 \\ 1 & -j & -1 & j \\ 1 & -1 & 1 & -1 \\ 1 & j & -1 & -j \end{bmatrix} \begin{bmatrix} 1 \\ 2 \\ 3 \\ 4 \end{bmatrix} $$

3. 计算结果

$$ \begin{align*} X[0] &= (1 \cdot 1) + (1 \cdot 2) + (1 \cdot 3) + (1 \cdot 4) &&= 1 + 2 + 3 + 4 &&= \mathbf{10} \\ X[1] &= (1 \cdot 1) + (-j \cdot 2) + (-1 \cdot 3) + (j \cdot 4) &&= 1 - 2j - 3 + 4j &&= \mathbf{-2 + 2j} \\ X[2] &= (1 \cdot 1) + (-1 \cdot 2) + (1 \cdot 3) + (-1 \cdot 4) &&= 1 - 2 + 3 - 4 &&= \mathbf{-2} \\ X[3] &= (1 \cdot 1) + (j \cdot 2) + (-1 \cdot 3) + (-j \cdot 4) &&= 1 + 2j - 3 - 4j &&= \mathbf{-2 - 2j} \end{align*} $$

右侧 (上): N=4 DIT-FFT (时域抽取)

输入序列按位倒序排列:x(0), x(2), x(1), x(3) $\rightarrow$ {1, 3, 2, 4}。输出为自然顺序。

DIT-FFT 数据流图(时域抽取) 输入 (位反序) 第1级 (2点FFT) 第2级 (4点FFT) 输出 (自然顺序) x(0)=1 x(2)=3 x(1)=2 x(3)=4 X(0)=10 X(1)=-2+2j X(2)=-2 X(3)=-2-2j W₂¹=-1 W₂¹=-1 1+3=4 (1-3)(-1)=-2 2+4=6 (2-4)(-1)=-2 W₄¹=-j W₄³=j 4+6=10 -2+(-2)(-j)=-2+2j 4-6=-2 -2-(-2)(j)=-2-2j

右侧 (下): N=4 DIF-FFT (频域抽取)

输入序列为自然顺序:x(0), x(1), x(2), x(3) $\rightarrow$ {1, 2, 3, 4}。输出按位倒序排列。

DIF-FFT 数据流图(频域抽取) 输入 (自然顺序) 第1级 (跨距N/2) 第2级 (2点FFT) 输出 (位反序) x(0)=1 x(1)=2 x(2)=3 x(3)=4 X(0)=10 X(2)=-2 X(1)=-2+2j X(3)=-2-2j W₄⁰=1 W₄¹=-j 1+3=4 2+4=6 (1-3)·W₄⁰=-2 (2-4)·W₄¹=2j W₂¹=-1 W₂¹=-1 4+6=10 (4-6)(-1)=-2 -2+2j (-2-2j)(-1)=-2-2j

⚡ 计算复杂度对比:DFT vs FFT

📊 DFT (矩阵计算)

复数乘法:

复数加法: N(N-1)

N=4时:

  • 乘法:4² = 16次
  • 加法:4×3 = 12次

时间复杂度: O(N²)

⚡ FFT (快速算法)

复数乘法: (N/2)log₂N

复数加法: Nlog₂N

N=4时:

  • 乘法:2×2 = 4次
  • 加法:4×2 = 8次

时间复杂度: O(N log N)

🚀 FFT加速效果

乘法加速比
(16 → 4次)
1.5×
加法加速比
(12 → 8次)

📈 不同数据规模的加速效果

数据点数 N DFT乘法 FFT乘法 加速比 DFT加法 FFT加法 加速比
4 16 4 4.0× 12 8 1.5×
8 64 12 5.3× 56 24 2.3×
16 256 32 8.0× 240 64 3.8×
64 4,096 192 21.3× 4,032 384 10.5×
256 65,536 1,024 64.0× 65,280 2,048 31.9×
1024 1,048,576 5,120 204.8× 1,047,552 10,240 102.3×

💡 关键启示: 随着数据规模N的增大,FFT的优势越来越明显。当N=1024时,乘法运算速度是DFT的200+倍!这就是为什么FFT被称为"20世纪最重要的算法之一"。在音频处理、图像压缩、信号分析等领域,FFT使得实时处理成为可能。