1 min read 377 words Updated Apr 25, 2026 Created May 03, 2026

前置知识:离散傅里叶变换

傅里叶变换在上文中更多的是 OI 中的理解以及应用。但是傅里叶变换奥秘还很多。

回顾 $\omega_n$ 在傅里叶变换中的定义:$e^{i \frac {2\pi} n}$,存在 $\omega_n^n = 1$ 的性质。意味着离散傅里叶变换实际上是周期性的,这也变相的解释了为什么存在循环卷积的性质。

傅里叶级数

我们回顾什么是傅里叶级数。傅里叶断言,对于任何周期信号 $x(t)$ 都可以表示为成谐波关系的虚指数信号的线性组合,即:

$$x(t) = \sum_{k = - \infty}^{\infty} a_k e^{jk \omega_0 t} $$

虽然后来证明当 $x(t)$ 满足狄里赫利条件时才成立……

周期信号 $x(t)$ 满足存在一个正值 $T$ 满足:

$$\forall t, x(t) = x(t + T) $$

最小的 $T$ 称为基波周期,$w_0 = \frac {2\pi} T$ 称为基波频率。

如果我们知道了一个 $x(t)$ 该如何求 $a_k$ 呢?

利用积分:

$$\int_0^T x(t) e^{-jn \omega_0 t} dt = \int_0^T \sum_{k = - \infty}^{\infty} a_k e^{jk\omega_0 t} e^{-jn \omega_0 t} dt $$

将后面变形:

$$\int_0^T \sum_{k = - \infty}^{\infty} a_k e^{jk\omega_0 t} e^{-jn \omega_0 t} dt = \sum_k a_k \left[ \int_0^T e^{j(k - n)\omega_0 t} dt \right] $$

注意到:

$$\int_0^T e^{j(k - n)\omega_0 t} dt = \int_0^T \cos[(k - n)\omega_0 t] dt + i \int_0^T \sin[(k - n) \omega_0 t] dt $$

中,存在:

$$\int_0^T \sin[(k - n) \omega_0 t] dt = \begin{cases} T & k = n \\ 0 & k \ne n \end{cases} $$

所以:

$$a_k = \frac 1 T \int_0^T x(t) e^{-jk\omega_0 t} dt $$

DCT 变换与 DFT 的联系

DCT 实际上就是 DFT 的一种特殊形式。

在傅立叶级数的推导中:

$$\int_0^T \sin[(k - n) \omega_0 t] dt = \begin{cases} T & k = n \\ 0 & k \ne n \end{cases} $$

是非常有趣的。

这反映出了如果对一个周期为 $T$,并且周期内是个奇函数的函数 $\int_0^T$,结果一定 $= 0$,反之不为 $0$

那么我们考虑将一个一般的周期信号变成一个周期内的偶函数,这样和 $\sin$ 这个奇函数相乘后还是奇函数,积分出来也就没了,从而使得 DFT 的虚部没了。

上面所说的连续的情况,但是实际上离散的情况也是一样。

考察 DFT 的式子:

$$b_k = \sum_{i = 0}^{n - 1} \omega_n^{ik}a_i $$

$m = 2n$,使得 $a_k = a_{m - k - 1}$,那么其 DFT:

$$b_k = \sum_{i = 0}^{m - 1} \omega_m^{ik} a_i = \sum_{i = 0}^{n - 1} a_i \left(\omega^{ik} + \omega^{(2n-k-1)k}\right) $$

发现并不优美,考虑将幂平移 $\frac k 2$

$$\begin{aligned} b_k &= \sum_{i = 0}^{m - 1} a_j \omega^{kj + \frac k 2} \\ &= \sum_{i = 0}^{n - 1} a_j \left[ \left(\cos \frac {\pi k (n + \frac 12)} n + \cos \frac {- \pi k (n + \frac 12)} n \right) + i\left(\sin \frac {\pi k (n + \frac 12)} n + \sin \frac {- \pi k (n + \frac 12)} n \right) \right] \\ &= 2 \sum_{i = 0}^{n - 1} a_j \cos \frac {\pi k(n + \frac 12)} n \end{aligned} $$

中间是利用 $e^{ix} = \cos x + i \sin x$ 展开推导而来。

发现虚部直接没了,这符合前面得出的结论。

然后我们成功的学会了 DCT。

IDCT

由于 DCT 本质上就是 DFT,所以 IDCT 本质上就是 IDFT。所以理解是简单的了。