终于到了傅里叶级数的章节了!信号处理打怪修炼已经到了关键的一步,冲破这关我们就能打遍天下无敌手了😼
目录
写在前面
在和傅里叶级数打交道之前,需要弄明白一个事情,那就是我们为什么需要它?
当我们在研究 LTI 系统时,如果能将一个复杂信号拆分成一系列简单信号的叠加,那么就能利用 LTI 系统线性与时不变的特性,利用每个简单信号的响应计算出最终的系统响应,那么这就带来了两个要求:
- (1) 选择的简单信号需要有足够强的表达能力,可以表示几乎所有的信号
- (2) 系统对简单信号的响应足够简单,方便计算
那么让我们来看看复指数信号的特性吧
系统响应特点
$$\begin{aligned} e^{st} &\to e^{st} H(s) \quad (连续 LTI)\\ z^{n} &\to z^{n} H(z) \quad (离散 LTI) \end{aligned}$$从 👆 的公式(证明方法非常简单,套用上一章介绍的卷积操作就可以得到)可以看出,复指数信号经过 LTI 系统后,仍是复指数信号,区别仅在于幅度上的变化。所以对于复指数信号而言,它满足我们提出的第二点要求,剩下要证明的就是第一点了
复指数信号的表达能力
很可惜,博主当前的能力并不能给出一个严格的证明,所以下面只好假设复指数信号可以表示绝大部分信号了 💦
不过可以通过一个很好玩的角度来帮助大家理解傅里叶级数系数的含义
当我们将一个周期(角频率为 $\omega_0$)信号 $x(t)$ 分解为一系列复指数信号的叠加 $\hat{x}(t) = \sum_{k=-\infty}^{\infty} a_k e^{j k \omega_0 t}$ 时,我们的目标是让 $\hat{x}(t)$ 尽可能地接近 $x(t)$,那么如何衡量两者的接近程度呢?
答案是用能量来衡量,令
$$E = \int_{T} |x(t) - \hat{x}(t)|^2 dt$$那么 $E$ 越小,说明两者越接近,所以最优的傅里叶系数可以通过用 $E$ 对 $a_k$ 求偏导并令其为0来得到
$$E_N = \int_T \left| x(t) - \sum_{k=-N}^{N} a_k e^{j k \omega_0 t} \right|^2 dt$$将其展开咔嚓咔嚓一顿计算后可以推出(利用复指数信号的正交性):
$$\frac{\partial E_N}{\partial a_k^*} = - \int_T x(t) e^{-j k \omega_0 t} dt + T a_k = 0$$从而得到傅里叶系数的表达式为:
$$a_k = \frac{1}{T} \int_T x(t) e^{-j k \omega_0 t} dt$$Tips:
其实从这个角度我们可以得出傅里叶级数收敛条件 —— 当信号的能量有限时,傅里叶级数可以收敛到原始信号
不过这个想法并不代表着傅里叶级数一定和原信号相等(比如 Gibbs 现象),只是说在能量的意义下两者是相等的 🤔
当然,除了能量角度的收敛条件外,傅里叶级数还有其他的收敛条件,比如 Dirichlet 条件,它的要求则分成了三点:
- 条件一:信号在一个周期内绝对可积 $\int_{T} |x(t)| dt < \infty$
- 条件二:在一个周期内,信号有有限个不连续点
- 条件三:信号在一个周期内有有限个极值点
正片开始
傅里叶级数
首先我们先来研究连续周期信号的傅里叶级数
连续时间傅里叶级数
设 $x(t)$ 是一个周期为 $T$ 的连续周期信号,那么它可以表示为如下形式的复指数信号的叠加
$$x(t) = \sum_{k=-\infty}^{\infty} a_k e^{j k \omega_0 t} \quad \text{其中} \omega_0 = \frac{2 \pi}{T}$$线性性质
对于任意的两个周期信号 $x_1(t), x_2(t)$,以及任意的常数 $c_1, c_2$
$$\begin{aligned} x_1(t) &= \sum_{k=-\infty}^{\infty} a_{1k} e^{j k \omega_0 t} \\ x_2(t) &= \sum_{k=-\infty}^{\infty} a_{2k} e^{j k \omega_0 t} \\ c_1 x_1(t) + c_2 x_2(t) &= \sum_{k=-\infty}^{\infty} (c_1 a_{1k} + c_2 a_{2k}) e^{j k \omega_0 t} \end{aligned}$$时移性质
对于任意的周期信号 $x(t)$,以及任意的时移量 $t_0$
$$\begin{aligned} x(t - t_0) &= \sum_{k=-\infty}^{\infty} a_k e^{j k \omega_0 (t - t_0)} \\ &= \sum_{k=-\infty}^{\infty} a_k e^{-j k \omega_0 t_0} e^{j k \omega_0 t} \end{aligned}$$时间反转
对于任意的周期信号 $x(t)$
$$\begin{aligned} x(-t) &= \sum_{k=-\infty}^{\infty} a_k e^{-j k \omega_0 (-t)} \\ &= \sum_{k=-\infty}^{\infty} a_{-k} e^{j (-k) \omega_0 t} \end{aligned}$$时域尺度变换 对于任意的周期信号 $x(t)$,以及任意的非零常数 $a$
$$\begin{aligned} x(a t) &= \sum_{k=-\infty}^{\infty} a_k e^{j k \omega_0 (a t)} \\ &= \sum_{k=-\infty}^{\infty} a_k e^{j k (a \omega_0) t} \end{aligned}$$周期卷积 对于任意的周期信号 $x_1(t), x_2(t)$
$$\begin{aligned} x_1(t) * x_2(t) &= \int_{T} x_1(\tau) x_2(t - \tau) d\tau \\ &= T\sum_{k=-\infty}^{\infty} a_{1k} a_{2k} e^{j k \omega_0 t} \end{aligned}$$相乘 对于任意的周期信号 $x_1(t), x_2(t)$
$$\begin{aligned} x_1(t) x_2(t) &= \left( \sum_{m=-\infty}^{\infty} a_{1m} e^{j m \omega_0 t} \right) \left( \sum_{n=-\infty}^{\infty} a_{2n} e^{j n \omega_0 t} \right) \\ &= \sum_{k=-\infty}^{\infty} \left( \sum_{m=-\infty}^{\infty} a_{1m} a_{2(k - m)} \right) e^{j k \omega_0 t} \end{aligned}$$微分 对于任意的周期信号 $x(t)$
$$\begin{aligned} \frac{d}{dt} x(t) &= \sum_{k=-\infty}^{\infty} a_k \frac{d}{dt} e^{j k \omega_0 t} \\ &= \sum_{k=-\infty}^{\infty} j k \omega_0 a_k e^{j k \omega_0 t} \end{aligned}$$积分 对于任意的周期信号 $x(t)$ (这里要求 $a_0 = 0$)
$$\begin{aligned} \int x(t) dt &= \sum_{k=-\infty}^{\infty} a_k \int e^{j k \omega_0 t} dt \\ &= \sum_{k \neq 0} \frac{a_k}{j k \omega_0} e^{j k \omega_0 t} + C \end{aligned}$$帕塞瓦尔定理
对于任意的周期信号 $x(t)$
$$\frac{1}{T} \int_{T} |x(t)|^2 dt = \sum_{k=-\infty}^{\infty} |a_k|^2$$证明方法和之前提到的能量最小化方法类似,利用到了复指数信号的正交性
利用傅里叶级数的性质可以做一些很有趣的事情
eg: 计算一个周期矩形信号 $f(x)$ 的傅里叶级数,正常的计算方法是利用定义去算,但是利用微分特性,我们可以得到 $f'(x) = \delta_N(x + T_1) - \delta_N(x - T_1)$
由于 $\delta_N(x)$ 的傅里叶级数系数为 $\frac{1}{T}$,所以 $f'(x)$ 的傅里叶级数系数为 $b_n = \frac{1}{T} (e^{-j n \omega_0 T_1} - e^{j n \omega_0 T_1}) = -j \frac{2}{T} \sin(n \omega_0 T_1)$
而利用积分特性,我们可以得到 $f(x)$ 的傅里叶级数系数为 $a_n = \frac{b_n}{j n \omega_0} = \frac{\sin(n \omega_0 T_1)}{n \pi} $
离散时间傅里叶级数
Tips : 如果你碰巧也是 NJU AI or 智科院的学生,课程采用的 DFS 的系数的定义和这里有所区别,计算 $a_k$ 时不需要 $\frac{1}{N}$,加上这一点后其余的结论基本不变 😼
另外,还需要记住一个新的表示方法
$$ W_{N}^{kn} = e^{-j (2 \pi / N) k n} $$这个表示方法在课程的考试题目中经常出现
有了连续周期信号的铺垫,我们可以很容易的写出离散时间周期信号的傅里叶级数的形式
$$ X[n] = \sum_{k=0}^{N-1} A_k e^{j k \omega_0 n} \quad \text{其中} \omega_0 = \frac{2 \pi}{N} $$嘿!非常奇怪对不对!离散时间的傅里叶级数不再是从 $-\infty$ 到 $\infty$ 的求和了,而是从 $0$ 到 $N-1$ 的求和
Tell Me Why!
但是先别急,细品之后就会发现非常有趣的一点,由于离散时间信号的特殊性质,我们可以证明 $e^{j (k+N) \omega_0 n} = e^{j k \omega_0 n}$,正是这种周期性使得离散信号的系数坍缩到了 $N$ 个
而求解系数的方法,一个笨办法是带入 $x[n]$ 解方程组,不过更简单的方法是利用正交性
对于离散时间的复指数信号,存在如下特性
$$ \sum_{n=0}^{N-1} e^{j k (2\pi / N) n} = \begin{cases} N, & k = 0 \mod N \\ 0, & \text{otherwise} \end{cases} $$利用这个特性,我们可以得到离散时间傅里叶级数系数的表达式
$$a_k = \frac{1}{N} \sum_{n=0}^{N-1} x[n] e^{-j k \omega_0 n}$$如果我们用系数来描述离散时间傅里叶级数的性质,可以得到 👇 的公式
线性性质: $Aa_k + Bb_k$
时移性质: $x[n - n_0] \leftrightarrow a_k e^{-j k \omega_0 n_0}$
频移性质: $e^{j k_0 \omega_0 n} x[n] \leftrightarrow a_{(k - k_0) \mod N}$
共轭: $a_{(-k) \mod N}^*$
时间尺度变换: $x_{(m)}[n] = \begin{cases} x[n/m] & \text{if } n/m \text{ is integer} \\ 0 & \text{otherwise} \end{cases} \leftrightarrow \frac{1}{m} a_k$
周期卷积: $x_1[n] * x_2[n] \leftrightarrow N a_{1k} a_{2k}$
相乘: $x_1[n] x_2[n] \leftrightarrow \sum_{m=0}^{N-1} a_{1m} a_{2(k - m)}$
一阶差分: $x[n] - x[n - 1] \leftrightarrow a_k (1 - e^{-j k \omega_0})$
累加: $\sum_{m=-\infty}^{n} x[m] \leftrightarrow \frac{a_k}{1 - e^{-j k \omega_0}}$
帕塞瓦尔定理
$$ \frac{1}{N} \sum_{n=0}^{N-1} |x[n]|^2 = \sum_{k=0}^{N-1} |a_k|^2 $$Proof :
$$\begin{aligned} \sum_{k = 0}^{N-1} |a_k|^2 &= \sum_{k=0}^{N-1} a_k a_k^* \\ &= \sum_{k=0}^{N-1} a_k \left( \frac{1}{N} \sum_{n=0}^{N-1} x^*[n] e^{j k \omega_0 n} \right) \\ &= \frac{1}{N} \sum_{n=0}^{N-1} x^*[n] \sum_{k=0}^{N-1} a_k e^{j k \omega_0 n} \\ &=\frac{1}{N} \sum_{n=0}^{N-1} |x[n]|^2 \end{aligned}$$例题 : 对于一个离散时间周期信号 $x[n]$,它具有下面四个特点
- 周期为 $N = 6$
- $\sum_{n=0}^{5} x[n] = 2$
- $\sum_{n=2}^{7} (-1)^n x[n] = 1$
- 在所有满足上述条件的信号中,能量最小
根据第二条可以得到 $a_0 = \frac{1}{3}$,根据第三条可以得到 $a_3 = \frac{1}{6}$,而在能量最小的条件下,可以得到 $a_1, a_2, a_4, a_5 = 0$
因此可以确定 $x[n] = \frac{1}{3} + \frac{1}{6} e^{j \pi n}$
LTI 系统与傅里叶级数
在本章内容的最开始,我们提到 LTI 系统对复指数信号的响应非常简单,那么如果我们进一步要求 $e^{st}$ 满足 $\mathcal{Re}(s) = 0$ 、$|z| = 1$,此时 $H(s) = H(j\omega)$、 $H(z) = H(e^{j\omega})$
$$\begin{aligned} H(j\omega) &= \int_{-\infty}^{\infty} h(t) e^{-j \omega t} dt \quad h(t) \text{ 是冲激信号响应} \\ H(e^{jw}) &= \sum_{n=-\infty}^{\infty} h[n] e^{-j \omega n} \quad h[n] \text{ 是冲激信号响应} \end{aligned}$$此时 H 称为系统的频率响应
有了上面的铺垫,那么 LTI 系统对于一般周期信号的响应就可以从下面的表达式中看出
$$\begin{aligned} y(t) &= \sum_{k=-\infty}^{\infty} a_k e^{j k \omega_0 t} H(j k \omega_0) \\ y[n] &= \sum_{k=0}^{N-1} A_k e^{j k \omega_0 n} H(e^{j k \omega_0}) \end{aligned}$$LTI 系统就是通过逐个乘以对应频率上的频率响应系数来构成最终的系统响应
这里引入 LTI 看起来似乎没啥作用,但它对于理解周期信号的傅里叶变换以及傅里叶变换的卷积性质起到了相当大的作用 🤗