分类: LINUX
2011-05-22 14:13:01
引:
最近在搞一个音频解码器,将随意录制好的声音按照不同的频率分离出不同的音频流,然后推到不同的音箱中,如果再考虑一下音场的谐性,那就是一个N.1声道的解码系统了。我只是想在女儿(或者儿子)出生之前为她做点事情,以便能最终做出个东西送给她(或者他)。
在实践的过程中,遇到了傅里叶变换,作文以记之。最终我会导出一个很常用的变换-傅里叶变换
参考:
信号:
信号是一个很广义的概念,它可以是一种波,也可以是一个阵列,它还可以是一个函数,它甚至是整个世界,总之只要能运载信息,它就可以被称为信号 。我们可以去分析一个信号,以获得信号本身更多的属性,从而可以更好的获得信息。比如,我们发现了谐波信号,我们就可以用波的理论去构造复杂的复合信号,典型就是频分复用。
欲想理 解信号,我们首先要学会将其分解,将之分解成不同的元素,如果这些元素之间互不相关,我们就可以对其分而治之了,分而解之了。 我们需要有一个信念,那就是所有的信号都是可分解的,我们必须明白这个复杂的世界其实是由很多次复杂的小世界叠加而成的,每一个次复杂的小世界都是由更简单的次次复杂的小小世界叠加而成的,诸如此类,以此类推,最终的元素就是质子和电子(如果不想提夸克或者弦理论的话)。 如果我们有了这个信念,我们就可以将一个信号分解成不同的信号的叠加。
比如一个物理概念,力,按照作用效果来说,它可以被分解在不同的两个方向,如果这两个方向互相垂直的话,那么一个方向的分力在另一个方向上没有效果,我们说这两个方向是正交的,当然,正交是一个数学概念。同样的道理,一个函数,如果我们将它当成一个矢量的话,我们也可以将之分解,关键问题是我们基于什么去分解它,在《码分多址(CDMA)的本质-正交之美》中,我们知道了正交多维矢量的概念,如果我们能找到一组正交的矢量,我们就可以将一个函数基于这组矢量进行分解。
寻找正交矢量:
对于信号,如果我们想用谐波来表示它的话,我们最好基于不同的频率将之进行分解,那么接下来的问题就是寻找一个正交基,它可以表示不同的频率的谐波。换句话说,我们希望用不同频率的谐波的叠加来表示原始函数。 我们也就是寻找一组函数I,使得下列正交条件成立:
由于简谐波本身可以表示成三角函数,通过分析三角函数,我们发现下面的I函数系列满足正交条件:
表示:
既然有了表示方法,接下来就是确定a,b等系数了,这些系数其实就是f(x)在各个相互正交的三角函数“坐标轴”上的分量,由于它们彼此都是正交的,我们能确定一个“坐标轴”上的分量不会在其它坐标轴上产生效果,因此它们的量是总的f(x)和该分量的乘积在区间a和b的积分,还记得公式
吗?那是离散的情况,现在是它的连续情况!最终我们得到了系数b的表示法。所谓离散的情况和连续的情况区别仅在两个符号:
离散的情况下,求和符号1直接相加了所有的项,而在连续的情况下,“一个项”需要由两部分组成,即“积分表达式”和dx,每一个项都是这两部分的乘积,并且各项的dx中的x是实数域的。
最终,我们得到了一个分解后的通用表示:
然后类比离散版的分量公式,求得了系数a和b,类比是次要的,重要的是:一个“坐标轴”上的分量不会在其它坐标轴上产生效果,因此它们的量是总的f(x)和该分量的乘积在区间a和b的积分 :
傅里叶变换:
其实已经说完了,以上的推导过程其实就是傅里叶变换,我们看得出,直到最后我才使用了积分公式,并且通篇没有使用任何关于更深层的数学原理性的论述,我们发现,其实理解傅里叶变换并不需要太多数学,甚至都不需要微积分知识,你只需要直到一个道理:数学原理背后都有其物理模型,物理模型背后都有其现实解释。
如果你确实将一个函数表示成了傅里叶级数,那么对于分析这个函数就太TM简单了,以滤波为例,如果我们需要得到低频信号,那么就可以将分量cosNx以后的全部丢掉,这样,我们就可以得到任何频率的信号了,N.1声道的分频自动就解决了。
傅里叶级数的现实解释就是:任何一个信号都是多个周期信号叠加而成的。我们可以用我们学过的波的干涉原理来理解它,一个两列简谐波1,2叠加的波a,在任何时间点,波a的幅度都是波1和波2幅度的算术和!
后记:
码分多址是将“码”本身当成了正交分量,而傅里叶级数却将频率当成了正交分量,它们俩的本质是相同的,唯一不同的就是对其的物理解释不同,如果我做了一个离散版本的傅里叶变换,过滤了高频信号,和码分多址的沃尔什编码相比较一下,它们的公式最终是一模一样了。
只要我们将一个信号按照一定的物理解释进行分解,各种级数就都出来了,除了那些纯数学的抽象解释,泰勒级数远比傅里叶级数更抽象,但是大多数教科书都是先讲泰勒级数,即使这样,泰勒级数也是有背后物理原理的,那就是任何一个大的变化都是由小的变化渐变而成的,哲学上的解释就是量变和质变,我们有拐点和马鞍面的概念! 对一个函数的不断求导其实就是挖掘它的变化层次,也就是最终有多少层的变化导致了最终函数曲线走向的变化。
本文没有使用常规的方法且求解傅里叶级数系数,而是纯粹从物理解释方面上进行形象化的解释和求解。传统的求解方式也比较简单就是在式子(1)两边同时乘以一个coskx和sinkx分别求解a和b,这是一种纯数学的求解方式。