0%

信号与系统-周期信号的傅里叶级数表示

本文摘自《信号与系统》-ALAN V.OPPENHEIM (Second Edition)
Written by markdown & LATEX, Coding by python.numpy & matplotlib

LTI系统对复指数信号的响应

在研究LTI系统时,复指数信号的重要性在于这样一个事实:一个LTI系统对复指数信号的响应也同样是一个复指数信号,不同的只是在幅度上的变化;也就是说:

\[ 连续时间: e^{st} \rightarrow H(s)e^{st} \cdots (3.1)\\ 离散时间: z^n \rightarrow H(z)z^n \cdots (3.2) \]

这里 \(H(s)\)\(H(z)\)是一个复振幅因子,一般来说是复变量s或z的函数。若系统对该信号的输出响应仅是一个常数(可能是复数)乘以输入,则称该信号为系统的 特征函数,而幅度因子称为系统的 特征值

证明复指数是LTI系统的特征函数

考虑一单位冲激响应为\(h(t)\)的连续时间LTI系统。对于任意输入\(x(t)\),可由卷积积分来确定系统输出。若令\(x(t)=e^{st}\),则有:

\[ y(t) = \int_{-\infty}^{+\infty} h(T)x(t-T)dT = \int_{-\infty}^{+\infty} h(T)e^{s(t-T)}dT \cdots(3.3) \]

\(e^{s(t-T)}\)可写成\(e^{st}e^{-sT}\),而\(e^{st}\)可以从积分号内移出来,这样(3.3)式变成:

\[ y(t) = e^{st} \int_{-\infty}^{+\infty} h(T)e^{-sT}dT \cdots (3.4) \]

假设上式右边积分收敛,于是系统对于 \(e^{st}\) 的响应为:

\[ y(t) = H(s)e^{st} \cdots (3.5) \\ H(s) = \int_{-\infty}^{+\infty}h(T)e^{-sT}dT \cdots (3.6) \]

式(3.5)中\(H(s)\)是一个复常数,其值决定于s,并且它与系统单位冲激响应关系如式(3.6)所示。

通过上述推导证明了 复指数是LTI系统的特征函数,对于某一给定的s值,常数\(H(s)\)就是与特征函数\(e^{st}\)有关的特征值。

可以用完全并行的方式证明复指数序列也是离散时间LTI系统的特征函数,在此省略。

LTI系统分析

对于LTI系统分析,借助特征函数把一个更为一般的信号分解开来,更有利于系统分析。e.g:令\(x(t)\)是三个复指数信号的线性组合,即:

\[ x(t) = \alpha_1e^{s_1t} + \alpha_2e^{s_2t} + \alpha_3e^{s_3t} \cdots (3.11) \]

根据 叠加性质,和的响应就是响应的和,因而:

\[ y(t) = \alpha_1H(s_1)e^{s_1t} + \alpha_2H(s_2)e^{s_2t} + \alpha_3H(s_3)e^{s_3t} \cdots (3.12) \]

更一般地说,在连续时间情况下,(3.5)式与叠加性质结合在一起就意味着:将信号表示成复指数的线性组合,LTI系统的响应将更为清晰(数学形式上)。

一般来说,上面的讨论中 \(s\)\(z\) 可以是任意复数,但傅里叶分析仅限于这些变量的特殊形式。在连续时间下仅涉及 \(s\) 的纯虚部值,即 \(s=\jmath\omega\),因此仅考虑 \(e^{\jmath\omega t}\) 形式的复指数。类似地,离散时间下仅局限于单位振幅的 \(z\) 值,即 \(z=e^{\jmath\omega}\) ,因此仅考虑 \(e^{\jmath\omega n}\) 形式的复指数。

连续时间周期信号的傅里叶级数表示

成谐波关系的复指数信号的线性组合

考虑2个基本周期信号:

\[ 正弦信号:x(t) = \cos(\omega_0t) \cdots (3.22) \\ 周期复指数信号:x(t) = e^{\jmath \omega t} \cdots (3.23) \]

这两个信号都是周期的,其基波频率都为\(\omega_0\),基波周期 $ T = {2} / w_0$。与(3.23)式有关的 成谐波关系 的复指数信号集就是:

\[ \phi_k(t) = e^{\jmath k \omega_0 t} = e^{\jmath k(2\pi /T)t}, k = 0, \pm1, \pm2, \cdots (3.24) \]

这些信号中的每一个都有一个基波频率,它是\(\omega_0\)的倍数。因此每一个信号对周期\(T\)来说都是周期的(虽然对于|k|>=2来说,\(\phi_k(t)\)的基波周期是T的约数)。于是一个由成谐波关系的复指数线性组合形成的信号:

\[ x(t) = \sum_{k=-\infty}^{+\infty} a_ke^{\jmath \omega_0 t} = \sum_{k=-\infty}^{+\infty} a_ke^{\jmath k(2\pi/T)t} \cdots (3.25) \]

该信号对\(T\)来说也是周期的。在(3.25)式中,k=0 这一项就是一常数, k=+1 和 k=-1 这两项都有基波频率\(\omega_0\),两者合在一起称之为 基波分量 或称为 一次谐波分量。k=+2 和 k=-2 这两项也是周期的,其周期是基波分量周期的1/2(或者说频率是基波的2倍。),称为 二次谐波分量。一般来说,k=+N 和 k=-N的分量称为 第N次谐波分量

一个周期信号表示成(3.25)的形式,就称为 傅里叶级数 表示。

傅里叶级数表示举例

有一周期信号\(x(t)\),其基波频率为\(2\pi\),用傅里叶级数表示为:

\[ x(t) = \sum_{k=-3}^{+3} a_k e^{\jmath k2\pi t} \cdots (3.26) \\ 其中,a_0 = 1, a_1 = a_{-1} = {1\over 4}, a_2 = a_{-2} = {1\over 2}, a_3 = a_{-3} = {1\over 3} \]

将(3.26)式中具有同一基波频率的谐波分量合在一起,重新写成:

\[ x(t) = 1 + {1\over 4}(e^{\jmath 2\pi t} + e^{-\jmath 2\pi t}) + {1\over 2}(e^{\jmath 4\pi t} + e^{-\jmath 4\pi t}) + {1\over 3}(e^{\jmath 6\pi t} + e^{-\jmath 6\pi t}) \cdots (3.27) \]

再利用欧拉公式将其改写:

\[ x(t) = 1 + {1\over 2} \cos(2\pi t) + \cos(4\pi t) + {2\over 3}\cos(6\pi t) \cdots (3.28) \]

下图使用matplotlib+numpy绘制,展示了上述信号是如何由不同成分的谐波分量组成的。左边从上到下依次为: \(1/2\cos(2\pi t)、\cos(4\pi t)、{2\over 3}\cos(6\pi t)\),右边最上为1V的直流分量(红色),中间为 \(1/2\cos(2\pi t) + \cos(4\pi t)\)合成的信号(蓝色),下面就是 \(x(t) = 1 + {1\over 2} \cos(2\pi t) + \cos(4\pi t) + {2\over 3}\cos(6\pi t)\)

Harmonics to construct a signal

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
from cycler import cycler

# datas to plot
t = np.arange(-2.0, 2.0, 0.01)
s = 0.5 * np.cos(2 * np.pi * t)
s2 = np.cos(4 * np.pi * t)
s3 = (2 / 3) * np.cos(6 * np.pi * t)
dc = np.ones(400)

# Runtime rc Settings
mpl.rcParams['font.family'] = 'monospace'
mpl.rcParams['font.monospace'] = 'Courier New'
mpl.rcParams['font.weight'] = 900
mpl.rcParams['grid.color'] = 'black'
mpl.rcParams['grid.linewidth'] = 1.2
mpl.rcParams['grid.linestyle'] = 'dashed'
mpl.rcParams['axes.labelsize'] = 12
mpl.rcParams['axes.labelweight'] = 700
mpl.rcParams['axes.labelcolor'] = 'black'
mpl.rcParams['axes.titlesize'] = 16
mpl.rcParams['axes.titleweight'] = 900

# Plot
ax1 = plt.subplot(321)
ax1.grid(True)
ax1.plot(t, s, 'k')

ax2 = plt.subplot(323)
ax2.grid(True)
ax2.plot(t, s2, 'k')

ax3 = plt.subplot(325)
ax3.grid(True)
ax3.plot(t, s3, 'k')

ax4 = plt.subplot(322)
ax4.grid(True)
ax4.plot(t, dc, 'r')

ax5 = plt.subplot(324)
ax5.grid(True)
ax5.plot(t, s+s2, 'b')

ax6 = plt.subplot(326)
ax6.grid(True)
ax6.plot(t, s+s2+s3+dc, 'c')

# show
plt.show()

(3.28)式是实周期信号傅里叶级数另一种表示形式的例子(利用正弦函数表示)。具体地说,如果\(x(t)\)是一个实信号,而且能表示成式(3.25)的形式,那么因为 \(x^*(t) = x(t)\),所以有:

\[ x(t) = \sum_{k=-\infty}^{+\infty} a^*_ke^{-\jmath \omega_0 t} \]

在该求和式中,以 -k 代替 k,则:

\[ x(t) = \sum_{k=-\infty}^{+\infty} a^*_{-k}e^{\jmath \omega_0 t} \]

将此式与(3.25)式比较,则要求 \(a_k = a^*_{-k}\),或者:

\[ a^*_k = a_{-k} \cdots (3.29) \]

为了导出傅里叶级数的另一种形式,首先将式(3.25)的求和重写成:

\[ x(t) = a_0 + \sum_{k=1}^\infty [a_k e^{\jmath k\omega_0 t} + a_{-k}e^{-\jmath k\omega_0 t}] \]

由(3.29)式,以\(a_k^*\)取代\(a_{-k}\),上式变成:

\[ x(t) = a_0 + \sum_{k=1}^\infty [a_k e^{\jmath k\omega_0 t} + a^*_ke^{-\jmath k\omega_0 t}] \]

因为 括号内两项互为共轭 ,于是:

\[ x(t) = a_0 + \sum_{k=1}^\infty 2Re[{a_k e^{\jmath k\omega_0 t}}] \cdots (3.30) \]

若将\(a_k\)以极坐标形式给出:

\[ a_k = A_k e^{\jmath \theta_k} \]

那么式(3.30)可写成:

\[ x(t) = a_0 + \sum_{k=1}^\infty 2Re [{A_k e^{\jmath(k\omega_0 t + \theta_k)}}] \]

这就是!

\[ x(t) = a_0 + 2\sum_{k=1}^\infty A_k \cos(k\omega_0 t + \theta_k) \cdots (3.31) \]

式(3.31)就是在连续时间情况下,对实周期信号常常见到的傅里叶级数的表达式。若将\(a_k\)以直角坐标形式表示,则可得到另一种表达式。令:

\[ a_k = B_k + \jmath C_k \]

这里\(B_k、C_k\)都是实数,于是式(3.30)可改写为:

\[ x(t) = a_0 + 2\sum_{k=1}^\infty [B_k \cos k\omega_0 t - C_k \sin k\omega_0 t] \cdots (3.32) \]

(3.31)和(3.32)这两个表达式最终都变成如(3.28)那样的形式。 由此可见,对于实周期函数来说,按照(3.25)式给出的复指数形式的傅里叶级数,数学上等效为(3.31)和(3.32)这两种形式之一 —— 即都是三角函数的表达式 。尽管我们习惯用三角函数表达式的形式来直观地认识信号的成分与特征,但在数学分析时,复指数形式则能更方便地参与计算。

求解连续时间周期信号的傅里叶级数系数

之前我们说一个给定的周期信号能表示成(3.25)的级数形式,那么我们还需要一种办法来确定这些系数 \(a_k\)。将(3.25)式两边各乘上 \(e^{-\jmath n\omega_0 t}\),可得:

\[ x(t)e^{-\jmath n\omega_0 t} = \sum_{k=-\infty}^{+\infty} a_k e^{\jmath k\omega_0 t} e^{-\jmath n\omega_0 t} \cdots (3.33) \]

将上式两边从0到 \(T=2\pi/\omega_0\) 对t积分,有:

\[ \int_0^T x(t)e^{-\jmath n\omega_0 t}dt = \int_0^T \sum_{k=-\infty}^{+\infty} a_k e^{\jmath k\omega_0 t} e^{-\jmath n\omega_0 t} dt \]

这里\(T\)\(x(t)\)的基波周期,以上就是在该周期内积分。将上式右边的积分和求和次序交换后得:

\[ \int_0^T x(t)e^{-\jmath n\omega_0 t}dt = \sum_{k=-\infty}^{+\infty} a_k[\int_0^T e^{\jmath(k-n)\omega_0 t}dt] \cdots (3.34) \]

(3.34)式右边括号内的积分很简单(我:???),为此利用欧拉关系得:

\[ \int_0^T e^{\jmath(k-n)\omega_0 t}dt = \int_0^T \cos(k-n)\omega_0 tdt + \jmath \int_0^T \sin(k-n)\omega_0tdt \cdots (3.35) \]

对于\(k\neq n,\cos(k-n)\omega_0 t\)\(\sin(k-n)\omega_0t\)都是周期函数,其基波周期为 \(T/|k-n|\)。现在做的积分是在\(T\)区间内进行,而\(T\)又一定是他们的基波周期\(T/|k-n|\)的整倍数。由于积分可以看作是被积函数在积分区间内所包括的面积,所以(3.35)式右边的两个积分对于\(k\neq n\)来说,其值为0。而对于\(k=n\),(3.35)式左边的被积函数是1,所以其积分值为\(T\)。综合上述可得:

\[ \int_0^T e^{\jmath(k-n)\omega_0t}dt = \left\{\begin{array}{rcl} T, & k = n \\ 0, & k \neq n \end{array}\right. \]

这样(3.34)式的右边就化为\(T a_n\)。因此有:

\[ a_n = {1\over T} \int_0^T x(t)e^{-\jmath n\omega_0t}dt \cdots (3.36) \]

这就是确定系数的关系式。同时注意一点,积分是在\(T\)的任意一个间隔内进行,结果一定是相同的。若以\(\int_T\)表示在任意一个\(T\)间隔内积分,则有:

\[ a_n = {1\over T}\int_T x(t) e^{\jmath n\omega_0t}dt \cdots (3.37) \]

总结

如果一个\(x(t)\)有一个傅里叶级数表达式(即\(x(t)\)能表示成一组成谐波关系的复指数信号的线性组合,如(3.25)所示),那么傅里叶级数中的系数就可由(3.37)式所确定。这一对关系式定义为 一个周期连续时间信号的傅里叶级数

\[ \left\{\begin{array}{clr} x(t) = \sum^{+\infty}_{k=-\infty} a_ke^{\jmath k\omega_0t} = \sum^{+\infty}_{k=-\infty} a_ke^{\jmath k(2\pi / T)t} \cdots (3.38)\\ a_k = {1\over T}\int_T x(t)e^{-\jmath k\omega_0t}dt = {1\over T}\int_T x(t) e^{-\jmath k(2\pi /T)t}dt \cdots(3.39) \end{array}\right. \]

式中分别给出了用基波频率\(\omega_0\)和基波周期\(T\)所表示的傅里叶级数的等效表示式。(3.38)式称为 综合公式,而(3.39)式称为 分析公式。系数\(a_k\)往往称为\(x(t)\)傅里叶级数系数 或称为 \(x(t)\)频谱系数 。 这些复数系数是对信号\(x(t)\)中的每一个谐波分量的大小做出的度量,系数\(a_0\)就是\(x(t)\)中的直流或常数分量。由(3.39)式代入k=0可得:

\[ a_0 = {1\over T} \int_T x(t)dt \cdots (3.40) \]

这就是\(x(t)\)在一个周期内的平均值。

Thanks for your support!