我理解的傅里叶变换

我理解的傅里叶变换

本科学的电子信息工程,用的最多的就是傅里叶变换。但大多数 EE 的学生只是会套用傅里叶变换的公式而已,对其数学本质却了解得比较少。我不敢说掌握了数学本质,只能说从某个角度有了一些理解。

之前知友@Heinrich 写过一篇傅里叶分析之掐死教程,这是一篇非常浅显易懂的傅里叶变换科普文,写得很好。而本文则侧重从数学的角度(准确地说是从线性空间的角度)介绍傅里叶变换,要求读者具备基本的高等数学和线性代数知识,目的是使读者对傅里叶变换有一个更好的理解。

本文分为五部分。第一部分介绍一些基本的数学概念,第二部分介绍傅里叶基和傅里叶级数,第三部分介绍傅里叶变换,第四部分回归 EE 的内容,第五部分总结。

一、基本概念

1.域

域是代数中一个非常重要的概念,是一种特殊的环(交换除环)。介绍域是为介绍线性空间做准备,而域的准确概念在本文中并不重要。因此为了方便,大家可以把域理解为一个可以做加减乘除的集合。也就是说,域由一个集合和四则运算构成,这个集合内的元素两两间可以做这四种运算(除了除以 0),结果依然在这个集合里。

常见的域有有理数域\mathbb{Q}、实数域\mathbb{R}和复数域\mathbb{C} ,它们分别是全体有理数、实数、复数关于数的加减乘除构成的。

2.线性空间

线性空间的概念是建立在域的基础上的。假设F是一个域,而V是一个集合。如果V内的元素之间可以做加法(也就是说两个元素做加法的结果仍然在集合内),VF可以做数乘(和域内的乘法不同,数乘是说V中的一个元素和F中的一个元素做数乘结果仍在V内。数乘可以理解为一个二元函数,它把F内的一个元素和V内的一个元素映射到V内的一个元素),这个V就叫做F一个线性空间。(V中的元素可以称为向量

当然了,上边所说的加法和乘法还要满足几个性质,比如加法要构成阿贝尔群等等。但为了方便,这里不详细说明,只是举几个线性空间的例子。

比如对\forall n \in \mathbb{Z},\mathbb{R}^n(n 维欧式空间)是实数域\mathbb{R}上的线性空间。因为空间中任意两个向量做加法(按照一般向量加法)或用一个实数乘一个向量,结果仍然是一个 n 维欧式空间里的向量。

而定义在闭区间[a,b]上的连续函数也构成一个\mathbb{R}上的线性空间。因为任意两个连续函数的和仍然是原来区间上的连续函数,一个连续函数乘一个实数也是连续函数。

下面将介绍线性空间有关的一些概念,先介绍线性组合。

3.线性组合

我们知道线性空间内的元素可以做加法,线性空间中的元素可以和域上的元素做数乘。因此我们取V中的一些向量\alpha_1,\hdots,\alpha_rF中的一些数\lambda_1,\hdots,\lambda_r,然后做运算

\alpha=\lambda_1\alpha_1+\cdots+\lambda_r\alpha_r

上式的\alpha就叫做\alpha_1,\hdots,\alpha_r的一个线性组合

这样,给定一些V中的向量,就可以通过它们的线性组合得到更多向量。而我们比较关心能不能得到 0 向量(0 向量是每个线性空间中唯一满足下列条件的一个元素:对任意元素\alpha \in V,0+\alpha=\alpha)。显然当所有的\lambda_i都取域中的 0 元素(和 0 向量的定义类似,因为域中的元素和线性空间中的元素均构成阿贝尔群)时结果为 0 。那么当至少有一个\lambda_i不为 0 时,它们的线性组合能不能为 0 呢?

如果可以为 0 ,我们就称这些向量线性相关,反之称为线性无关。我们更关心线性无关的情况,它是我们介绍基和维数必不可少的。

4.基与维数

我们在V中找到了一些线性无关的向量,这些向量可以通过线性组合构成无数其他向量。细心的你可能已经发现了:这些向量的所有线性组合构成的向量就构成了一个线性空间。这个空间中的元素一定属于V,因此它叫做V的一个子空间。

如果构成的线性空间恰好是V,我们称这些向量是V一组基,而向量的个数叫做V维数。如果V中有无限多个线性无关的向量,它就是无限维的。

在这里我们不加证明地给出:任何非零线性空间均有基。

5.内积

之前我们介绍线性空间包括了两种运算:第一种是空间内向量的加法,第二种是空间内向量与域中元素的数乘。而内积则是空间内两向量的运算,或者我们可以理解为把空间中两个元素映射为域中一个元素的一个二元函数。我们规定这个函数应该满足一些性质。

首先我们规定,内积是双线性的。在介绍双线性之前,我们先讲讲线性。线性就是说一个一元函数把线性组合映射为线性组合,即f(\lambda_1\alpha_1+\cdots+\lambda_r\alpha_r)=\lambda_1f(\alpha_1)+\cdots+\lambda_rf(\alpha_r)恒成立.

而双线性是针对二元函数的,它是说固定其中任何一个变量后,这个一元函数都是线性的。

除了双线性,内积还必须是正定的。即一个向量和它自己的内积必须是非负的,而非零向量和它自己的内积必须是正的。

容易验证,对于欧式空间中的向量点乘是满足这个性质的。而我们前边提到的闭区间上的连续函数,可以定义其内积为\left<f,g\right>=\int_a^b f(x)g(x)\mathrm{d}x.

最后,我们定义两个向量正交是指它们的内积为零。

6.赋范线性空间

我估计很多人能看到这已经准备选择狗带了,但是我还是要讲。

我保证这是最后一个概念了……而且我尽量简单粗暴。

首先我们介绍一个概念:范数。对于\mathbb{R}上的线性空间,我们定义它的范数为

||\alpha||=\sqrt{\left<\alpha,\alpha\right>}

这样的范数也叫作由内积诱导的范数。内积诱导的范数除了要满足正定性之外,还要满足三角不等式(||\alpha+\beta|| \leq ||\alpha||+||\beta||)、CS不等式(|\alpha \cdot \beta|\leq ||\alpha||\cdot ||\beta||)。

\mathbb{R}上的线性空间如果构造了这样的范数,就称它为赋范线性空间。


我不知道有多少人有耐心读到这,如果上边的内容有疑问可以去看任何一本高等代数教材,各种概念并不需要理解得很具体,建议理解得不透彻的读者利用欧式空间进行类比。下边将开始介绍傅里叶基和傅里叶级数。

二、傅里叶基和傅里叶级数

1.傅里叶基

我们回忆一下刚才讲的正交的概念:两个向量的内积为 0 。如果一个空间有一组基两两正交,那么它就叫做一组正交基

我们可以证明,定义在[-\pi,\pi]上的所有平方可积的函数构成线性空间,规定其内积为

\left<f,g\right>=\int_{-\pi}^{\pi}f(x)g(x)\mathrm{d}x

(为了简单起见,只考虑实值函数,复函数则其中一个取共轭即可)

我们不加证明地给出:这个空间内的每个向量都可以表示为其一组基的无限线性组合。这就是 Fourier 展开。常取的基是

\left\{ 1,\sin nx,\cos nx \right\} (n \in \mathbb{N})\left\{ \exp(inx) \right\} (n \in \mathbb{Z})

容易证明这些基都是正交的,而且不能找到另外一个向量和它们全正交(这样的一组向量叫做极大正交向量族)。这样,我们就可以把任何一个[-\pi,\pi]上的平方可积的函数通过这些基的线性组合表示出来,这组基就叫做傅里叶基

2.傅里叶级数

傅里叶级数实际上就是把这个空间中的一个向量通过基的线性组合的方式写出来。我们已经知道了,两个正交的向量内积为 0 ,因此如果一个函数是由正交基的线性组合表示,我们可以很容易地求得它的系数。

f(x)=a_0+\sum_{n=1}^{\infty}\left( a_n \cos nx + b_n \sin nx \right) (这就是傅里叶级数,实际上就是一个基的线性组合,a_0是 1 的系数,a_nb_n分别是\cos nx \sin nx的系数)。现在我们想计算每一个基的系数。为此,我们试着计算一下它和其中一项的内积,比如

\int_{-\pi}^{\pi}f(x)\cos nx\mathrm{d}x = a_0\int_{-\pi}^{\pi}\cos nx\mathrm{d}x+\sum_{m=1}^{\infty}a_m\int_{-\pi}^{\pi}\cos mx \cos nx\mathrm{d}x+\sum_{m=1}^{\infty}b_m\int_{-\pi}^{\pi}\sin mx \cos nx\mathrm{d}x

不过注意到不同的向量都是正交的,所以非零项只有a_n\int_{-\pi}^{\pi}\cos ^2 nx\mathrm{d}x=\pi a_n.

好简单啊!也就是说,a_n=\frac{1}{\pi}\int_{-\pi}^{\pi}f(x)\cos nx\mathrm{d}x.

这么说似乎还是不明显,我这么写:

a_n=\frac{\left<f(x),\cos nx\right>}{\left< \cos nx,\cos nx\right>}.

类比一下欧几里得空间。比如说二维欧式空间\mathbb{R}^2中,我取一组正交基(1,0),(0,2),那么向量(3,4)写成这组基的线性组合时系数分别是多少呢?答案就是

\frac{\left<(3,4),(1,0)\right>}{\left<(1,0),(1,0)\right>}=3\frac{\left<(3,4),(0,2)\right>}{\left<(0,2),(0,2)\right>}=\frac{8}{4}=2.

完全一样耶!

实际上从空间的角度,二者确实没有什么本质区别。

那么现在我们已经理解了,傅里叶基其实就是这个函数构成的空间中的一组正交基,而傅里叶级数就是把空间里的元素写成基的线性组合。但我们注意到这里的函数是[-\pi,\pi]的,如果换一个区间,结果会如何呢?

三、傅里叶变换

我们把区间换成[-a,a],这样相当于把每个函数“拉伸”了a/\pi,这样每个基也拉伸了a/\pi倍,变成了

\left\{ 1,\sin n\omega x,\cos n\omega x \right\} (n \in \mathbb{N})\left\{ \exp(in\omega x) \right\} (n \in \mathbb{Z}),\omega = \frac{\pi}{a}.

而傅里叶级数就变成了

f(x)=a_0+\sum_{n=1}^{\infty}a_n \cos n\omega x + b_n \sin n\omega xf(x)=\sum_{n=-\infty}^{\infty}a_n\exp(in\omega x).

下面我们考虑指数函数形式的傅里叶级数在a \rightarrow\infty时的情形。

1.在区间变为[-a,a]后,傅里叶系数变为a_n=\frac{1}{2a}\int_{-a}^{a}f(t)\exp(-in\pi t/a)\mathrm{d}t

2.在f(x)的傅里叶展开中,把傅里叶系数带入,得到

f(x)=\lim_{a \rightarrow \infty}\left[ \sum_{n=-\infty}^{\infty}\left( \frac{1}{2a}\int_{-a}^{a}f(t)\exp(-in\pi t/a)\mathrm{d}t \right)\exp(in\pi x/a)  \right]

3.上式的积分式是关于变量t的,而外边的项\exp(in\pi x/a)t无关。因此可以写成

f(x)=\lim_{a \rightarrow \infty}\left[ \sum_{n=-\infty}^{\infty}\left( \frac{1}{2a}\int_{-a}^{a}f(t)\exp(in\pi (x-t)/a)\mathrm{d}t \right)  \right]

4.我们现在希望上式是黎曼和的形式,这样就可以写成定积分。为此取\lambda_n=\frac{n\pi}{a},、\lambda=\lambda_{n+1}-\lambda_n=\frac{\pi}{a},这样上式变成

f(x)=\lim_{a \rightarrow \infty}\left[ \sum_{n=-\infty}^{\infty}\frac{1}{2\pi}\int_{-a}^{a}f(t)\exp(i\lambda_n\pi (x-t)/a)\mathrm{d}t  \right] 、\lambda

5.当a\rightarrow \infty时,\Delta \lambda\rightarrow 0,上式作为黎曼和的形式可以写成定积分:

f(x)= \frac{1}{2\pi}\int_{-\infty}^{\infty}\left[\int_{-\infty}^{\infty}f(t)\exp(i\lambda\pi (x-t)/a)\mathrm{d}t  \right] \mathrm{d}\lambda

6.上式略作变形,得到

f(x)= \frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}\left(\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}f(t)\exp(-i\lambda t)\mathrm{d}t  \right) \exp(i\lambda x)\mathrm{d}\lambda

这样,我们从傅里叶级数出发,在a\rightarrow \infty 的情形下得到了一个式子。这个式子的本质仍然是一个求和式,只是因为极限所以写成了积分式。它把f(x)写成了\exp(i\lambda x)\mathrm{d}\lambda的线性组合。

等等!

线性组合?!

确实如此啊。只是这里的变量\lambda是取遍整个数轴的。相当于对实数轴上的每个点都对应了这个函数的一个“基”,而这个积分式就是这些基的“线性组合”。

括号里的那堆东西,也就是

\widehat{f}(\lambda)=\frac{1}{\sqrt{2\pi}}\int_{-\infty}^{\infty}f(t)\exp(-i\lambda t)\mathrm{d}t

就叫做这个函数的傅里叶变换

傅里叶变换是这样一个函数,它在\lambda处的函数值\widehat{f}(\lambda)表示函数f(x)\lambda对应的基上的系数。至此我们就完成了傅里叶变换从空间角度的介绍。

补充:

前边我们已经定义了范数,而两个向量之间的距离可以用它们差的范数刻画。空间中有一向量序列v_1,v_2,\ldots柯西列,如果它满足对任意的\epsilon > 0,存在正整数N,使得对任意的m,n>N,有||v_m-v_n||<\epsilon。也就是说,在柯西列中,我们总可以去掉有限个元素,使得剩余的项两两之间的最大距离小于一个给定的正数。

柯西列都是收敛的。如果空间中任何一个柯西列都收敛到空间内部,我们就称这个空间是完备的

完备的内积空间叫做希尔伯特空间。希尔伯特空间中的极大正交向量组称为希尔伯特基。傅里叶基是 Lebesgue 函数空间L^2([-a,a])L^2指平方可积函数构成的函数空间,它和平方可和序列构成的空间均为希尔伯特空间)上常取的一组基。

另外,从基的角度,先引出傅里叶级数,再通过极限去说明傅里叶变换更好一些。但其实傅里叶变换更加自然,而傅里叶级数只是紧致阿贝尔群上的傅里叶变换。

四、回归信号

我们再从信号分析的角度考虑上述结果。我们求傅里叶变换说的是把信号从“时间域”变换到“频率域”,而频率域对应值就代表“信号”在该点的“频率分量”。为什么我们可以说“频率分量”呢?就是因为每一个频率都代表了一个基,原信号可以写成这些基的线性组合,而每个基上的系数就代表了信号在这个基(频率)上的分量大小。

回忆我们高中时候学物理,做平抛、斜抛运动的题时,总是二话不说地水平竖直分解运动,为什么呢?因为对于平面内的运动,水平和竖直就是两组“基”(并不十分准确,理解即可)。那么为什么非得水平和竖直而不是斜 30° 角呢?这我们就要考虑重力了。重力只在竖直方向有作用,它在水平这组基下的分量为 0 。所以说,基的选取也很重要。

而信号的分解为什么要在三角函数或指数函数里进行分解呢?首先我们要说明,这两个分解的本质是一样的,因为三角函数的定义就是通过指数函数的(与欧拉公式无关,见余翔关于欧拉公式的一个回答)。一方面,三角函数具有非常好的性质,简单的三角函数非常容易分析,产生也很自然。另一方面,三角函数非常好地刻画了信号的频率,而这也是我们非常关心的。

从基的线性组合的角度,傅里叶变换的很多性质都是显然的,请读者自己试着证明。

五、总结

傅里叶变换是 EE 专业学生的“命根子”,几乎所有的信号处理都需要依靠傅里叶变换。毫无疑问,对傅里叶变换更深层的理解,有助于我们更好地学习和研究。本文的理解角度也是我认为最适合 EE 专业学生的理解方式。

然而本文只是一个概念性的介绍,如果要真正地理解,可以仔细阅读参考文献中列举的资料。如果文章有不妥之处,也请大家批评指正。(因为本文不是介绍知识,里边掺杂了自己的理解)

参考文献

[1] 张贤科. 高等代数学, (第二版)[M]. 清华大学出版社, 2004.

[2] Albert, Boggess, 赵树森. 小波与傅里叶分析基础[M]. 电子工业出版社, 2010.

编辑于 2016-11-21

文章被以下专栏收录