要搞懂傅里叶变换到底从何而来,必须要从线性代数的角度出发。
线性代数中一个非常重要的概念就是空间,所谓空间其实就是研究对象(元素)和所要遵循的规则的一个集合,比如研究的对象是二维的向量,那么对应的是二维空间,再加上各种规则又能扩展出许多各异的空间。在“线性”代数中最基本的就是线性空间,线性空间就是研究的对象(空间中的元素)满足8条规则的空间,这8条规则中加法和乘法的规则各4条。如果想要“分析”某个东西只有线性当然是不够的,要把一个东西分解就必然要有基的概念,而作为基一定要有一个可以度量的长度的概念,这样其余的东西才能用这个基的倍数来表示。有长度的概念还不够,还要加上角度的概念,有了角度的概念空间才得以扩张,向量才得以描述,两个向量必须要错开0度以上的角度才能形成二维空间。进一步定义了内积的线性空间就是欧几里得空间。
n维的欧几里得空间是以n维向量作为元素的,对于其中的两个向量 和 其内积定义为 :
也可以定义为:
为两个向量的夹角。一个向量与自身的内积再开方就是这个向量的长度。
有了内积的概念,坐标系就形成了,一组线性无关的向量,即相互之间夹角都不为零的向量就可以撑起一片空间,这些线性无关的向量就是这个空间的坐标系,也可以称为基。空间有多少维,基最多就有多少个,即n维空间的基可以由n个线性无关的向量表示,而向量可以表示为一个数组,这个数组其实是在一组长度为一个单位(乘法4条中的1元律的1)的正交基即标准正交基下表示的,n个数组写在一块就是一个矩阵,即n维空间的基可以用n×n阶的矩阵来描述。在这些基中比较特殊的就是正交基,正交基是基向量之间的内积互相为0的一组基,这样的基向量互相没有瓜葛,用正交基来表示向量就不会有冗余成分。要想获得一组正交基可以利用shimidt正交化,shimidt正交化通过不断减投影逐步消去线性无关向量组的冗余,得到正交基。除了内积,空间中还要有变换的概念,变换可以看作是一种运动,因此元素在空间中还要能够运动,运动如何实现呢?我们知道基可以写成矩阵,而向量与某一个基进行内积运算可以得到这个向量在这个基上的投影,也就是把向量变换成了在这个基上表示的形式。假设我们有一个列向量组 ,写成矩阵形式,则这个向量组可以看成是在之前提到过的标准正交基下表示的:
阶单位阵就是是标准正交基。怎么让运动呢?让向量在坐标下运动,可以通过为向量偷换一组基来实现,这个过程是这样的:将改变后的基在下表示出来,即用基下的向量表示出改变后的基,设这个基为,则在新基下的坐标为,是一组基的矩阵表示,也是线性变换,所以有句话叫矩阵就是线性变换。因此线性变换的本质是偷偷改变向量所在的基,在向量看来,就是它眼中的,它没有发现自己的世界改变了,它所描述的倍数关系和角度关系都是为单位的,但是在外界(原来的)看来向量为了使自己的世界看起来和原来一样,把自己给改变了,所以可以 说改变的是它,也可以说改变的是自己,这是相对的。
什么是相似变换呢?相似变换就是在不同基下的同一个线性变换。可以这么理解,假设在下有一个列向量,把它看作是另一组基向量的线性组合的系数,怎么理解呢?就是说里的数字表示的是以另一个基中的基向量为单位的的倍数而不是以1为单位长度的正交基向量的倍数,说白了它眼中的世界和我们的不一样。如果有一个线性变换,它所表示的对基的拉伸比例与旋转角度是对而言的,那么如何对做线性变换呢,直接左乘?如果直接左乘我们就是默认是在下的向量,但实际上是在下的向量。所以在左乘之前必须要揭开的真面目,即找出在下的真实坐标,做法很简单就是在下把表示出来,在看来就是标准正交基,但是在我们看来只是下的一组线性无关的向量,则就是在下的真面目,现在,在同一个坐标系下就可以施加线性变换了,得到,变换后的结果回归以为标准正交基的状态就要再乘上,即,因此与是同一个线性变换,只不过是这个线性变换在另一个世界即以为标准正交基时的形态。不难理解线性变换与向量是绝对的、不随坐标改变的实体,所有矩阵数字的变化都只是因为基(参照系)在改变。矩阵的相似对角化就是在寻找线性变换在以不同基为标准正交基时能达到的最简形式,在这个基上这个线性变换只是简单的伸缩,广泛用于数据压缩降维的PCA算法和离散余弦变换DCT都是同样目的,即寻找一组基使数据的表示最简,在最简表示下的一些信息量小的空间维,可以选择舍弃而不影响其他维度,如PCA算法中奇异值小的项,DCT中的高频分量。当然不是所有的线性变换都有最简表示的,要能对角化,必须要有与空间维度数目相同的特征向量,特征向量才是线性变换真正的“特征”,无论线性变换在各种基下如何千变万化,它是始终不变的,构成线性变换的基本元素。
傅里叶变换实际上也是在寻找一组基来更好的观测数据,但是目前所定义空间还不足以描述傅里叶变换。首先我们要将空间的维数扩展到无限维,即空间中的向量为,完备的无穷维内积空间就叫做希尔伯特空间。无穷维仍然不够,现在的基仍然是用向量来表示的,需要再进一步扩展,即把向量替换成连续的函数,因为要满足内积空间的基本要求,所以首先要定义函数的内积。
我们可以从向量内积的形式导出连续函数的内积:假设函数和是我们所要定义的空间中的两个元素,先把它们离散化成向量形式,设它们的定义域为,是一个足够的整数,将区间分成段,每段长度为,因为足够大,所以足够小,令,则每一个小区间内的值都可以用来近似,则函数可写为:
这样就变成了一个N维的向量。对也做同样的处理,那么和的内积可以近似为:
因为随着区间数的增大这个值会越来越大,这样的定义显然不合理。所以更好的办法是求所有区间的平均值:
在N趋于无穷的时候就可以看作是微元,将求和化为积分,则连续函数的内积可以定义为:
还有一点要求,那就是两个函数在定义域内的内积不能为无穷大即要满足平方可积条件:;
以函数来取代向量的无穷维内积空间就叫做空间。若其中元素(函数)的定义域为,则这个空间就表示为;
前面提到过,线性变换就是基,现在就可以对傅里叶变换下定义了,傅里叶变换就是空间上的一个标准正交基。
这个基可以表示为:
容易证明和在时为零,且无论何时都为零。即基中所有的函数只有与自己的内积不为零。这个只是为了让积分结果为1而引入的。还有还有一个问题,就是在有限维空间中的基中的线性无关向量的数量要等于空间的维数,但是是无限维的,函数系的数量也是无穷多的。不过可以证明空间具有完备性,这个应该是泛函分析的内容(没学过)。
这样一来所有定义在空间中的函数即定义域为的所有平方可积函数都可以用这个基来进行表示。这个表示就是傅里叶系数,结合前面的概念,傅里叶系数就是另一组基下的一个向量罢了。现在让基中的每个函数都以为周期重复(之前只取一个周期),则以它们为基的函数自然也以为周期重复。周期一定要是吗?代表的是一个单位圆周,任何周而复始的事物都能抽象成这么一个周。但是不同的事情完成一个周的时间是有差别的,即周期是不同的,而信号一般都是随时间变化的,所以必须要引入角频率 的概念来衡量完成一个周期的快慢,则有对应关系。之前的微元是对弧度的微分,而是对周期的微分,如果以为变量的话,两个坐标存在一个缩放关系,改变一个的时候应该改变了一个,则以为变量的坐标下的 就相当于以为变量的坐标下的1,正因如此 被称作为基频,这也是周期信号只有在基频和其谐波上存在频率分量的最根本原因了,假如其在谐波外的频率上存在分量,则好比空间上的函数在函数(随便写的)上有分量,如果我们承认是以为周期的函数,那么这个函数显然不能以为周期,周期性的前提都不成立了。
这样就可以写出时间信号的三角形式傅里叶展开式了:
、和就是信号在傅里叶变换下的坐标。具体坐标值就是函数在基上的投影,由内积就可求得,而连续函数的内积定义为积分形式,则坐标值为:
接下来给出复数形式的。不过在此之前需要弄明白复数形式与三角形式的渊源。
对于一个运动方向不会改变的物体,可以容易的用一个数字(速率)确定其状态。但是对于运动方向会发生改变的物体,一维的数字显然不足以描述其状态。而在周期运动中速度的方向必然会发生改变,不然就回不去了。所以各种各样的函数出现了,一个变量的函数就能描述只能存在于二维的周期运动,因为函数值也算一维,所以sin、cos函数就出现了,函数所携带的信息量是够了,但是其本质上还是一维的,它所描述的是二维运动在一维数轴上的投影量,就好比我们看地上影子的大小来判断一个人所在的高度,这种间接的方式无疑增加了分析二维运动的难度。那么有没有办法用一个数来直接确定一个二维的运动呢,那么就只有把数字扩展到二维才行了,复数正是二维的数字。复数是通过定义一种旋转来实现维度的扩张,引入的虚数单位就表征了这个旋转,数字1乘以就转到了虚轴,再乘以就转到了实数轴负半轴。
(借的图)
在数平面的其他地方复数就如同一个二维向量,以实部和虚部来表示,但是它与二维向量有着巨大的区别,二维向量是通过拼接两个一维的数来实现对二维空间的描述的。但是对于每个数字而言只存在一维,所以每个数字都是独立的,因此在进行向量加法与乘法的时候不同不同维的数是单独进行计算的。不过向量也为描述更高维度的状态提供了与函数不同的思路,以向量为对象研究二维运动与函数相比要多了夹角内积的概念,因此与函数相比能够更直观、更方便的表示方向。而复数与向量的区别就表现的乘法法则上,本质上还是由于复数的实部和虚部是可以通过来进行旋转相互转化的。