50 个回答
之前写过两篇关于傅立叶变换的文章:
- 如何直观地理解傅立叶变换?
- 如何理解傅立叶级数公式? (后面此文简称“代数细节”)
傅立叶级数是针对周期函数的,为了可以处理非周期函数,需要傅立叶变换。如果对傅立叶级数有疑问,请参看“代数细节”一文。
先看下思路:
- (a).周期函数,可以通过傅立叶级数画出频域图
- (b).增长周期,频域图变得越来越密集
- (c). T=\infty ,得到傅立叶变换,频域图变为连续的曲线
下面是细节的讲解。
1 傅立叶级数
让·巴普蒂斯·约瑟夫·傅里叶男爵(1768 -1830)猜测任意周期函数都可以写成三角函数之和。比如下面这个周期为 2\pi 的方波,可以用大量的正弦波的叠加来逼近:
1.1 傅立叶级数是向量
从代数上看,傅立叶级数就是通过三角函数和常数项来叠加逼近周期为 T 的函数 f(x) :
\displaystyle f(x)=a_0+\sum _{{n=1}}^{\infty }\left(a_{n}cos({\frac{2\pi n}{T}x})+b_{n}sin({\frac{2\pi n}{T}x})\right),a_0\in \mathbb {R}\\
在“代数细节”一文中解释了,实际上是把 f(x) 当作了如下基的向量:
\{ 1,cos({\frac{2\pi n}{T}x}),sin({\frac{2\pi n}{T}x})\} \\
那么上面的式子就可以解读为:
\displaystyle f(x)=\underbrace{a_0}_{基1下的坐标}\cdot 1+\sum _{{n=1}}^{\infty }\left(\underbrace{a_{n}}_{对应基的坐标}cos({\frac{2\pi n}{T}x})+\underbrace{b_{n}}_{对应基的坐标}sin({\frac{2\pi n}{T}x})\right)\\
说具体点,比如刚才提到的, T=2\pi 的方波 f(x) ,可以初略的写作:
f(x)\approx 1+\frac{4}{\pi }sin(x)\\
从几何上看,有那么一丁点相似:
我们可以认为:
f(x)\approx 1+\frac{4}{\pi }sin(x)\\
此函数的基为:
\{ 1,sin(x)\} \\
则 f(x) 相当于向量:
\displaystyle (1,\frac{4}{\pi })\\
画到图上如下,注意坐标轴不是 x,y ,而是 1,sin(x) :
1.2 频域图
再增加几个三角函数:
f(x)\approx 1+\frac{4}{\pi }sin(x)+0sin(2x)+\frac{4}{3\pi }sin(3x)+0sin(4x)+\frac{4}{5\pi }sin(5x)\\
从几何上看,肯定更接近了:
此时基为:
\{ 1,sin(x),sin(2x),sin(3x),sin(4x),sin(5x)\} \\
对应的向量为:
\displaystyle (1,\frac{4}{\pi },0,\frac{4}{3\pi },0,\frac{4}{5\pi })\\
六维的向量没有办法画图啊,没关系,数学家发明了一个频域图来表示这个向量:
上图中的 0,1,2,3,4,5 分别代表了不同频率的正弦波函数,也就是之前的基:
0Hz\iff sin(0x)\quad 3Hz\iff sin(3x)\cdots \\
而高度则代表在这个频率上的振幅,也就是这个基上的坐标分量。
这里举的例子只有正弦函数,余弦函数其实也需要这样一个频谱图,也就是需要两个频谱图。当然还有别的办法,综合正弦和余弦,这个后面再说。
原来的曲线图就称为时域图(这点请参考“代数细节”),往往把时域图和频域图画在一起,这样能较为完整的反映傅立叶级数:
不管时域、频域其实反映的都是同一个曲线,只是一个是用函数的观点,一个是用向量的观点。
当习惯了频域之后,会发现看到频域图,似乎就看到了傅立叶级数的展开:
2 非周期函数
非周期函数,比如下面这个函数可以写出傅立叶级数吗?
这并非一个周期函数,没有办法写出傅立叶级数。
不过可以变换一下思维,如果刚才的方波的周期:
T=2\pi \to T=\infty \\
那么就得到了这个函数:
在这样的思路下,就可以使用三角级数来逼近这个函数:
观察下频域,之前说了,对于周期为 T 的函数 f(x) ,其基为(对此点有疑问的,可以看“代数细节”一文):
\{ 1,cos({\frac{2\pi n}{T}x}),sin({\frac{2\pi n}{T}x})\} \\
刚才举的方波 T=2\pi ,对应的基就为(没有余弦波):
\{ 1,sin(x),sin(2x),sin(3x),sin(4x),sin(5x),\cdots \, sin(nx)\} \\
对应的频率就是:
\{ 0Hz,1Hz,2Hz,3Hz,4Hz,5Hz,\cdots \, nHz\} \\
按照刚才的思路,如果 T 不断变大,比如让 T=4\pi ,对应的基就为(没有余弦波):
\{ 1,sin(0.5x),sin(x),sin(1.5x),sin(2x),sin(2.5x),\cdots \, sin(0.5nx)\} \\
对应的频率就是:
\{ 0Hz,0.5Hz,1Hz,1.5Hz,2Hz,2.5Hz,\cdots \, 0.5nHz\} \\
和刚才相比,频率更加密集:
之前的方波的频域图,画了前50个频率,可以看到,随着 T 不断变大,这50个频率越来越集中:
可以想象,如果真的:
T=2\pi \to T=\infty \\
这些频率就会变得稠密,直至连续,变为一条频域曲线:
傅立叶变换就是,让 T=\infty ,求出上面这根频域曲线。
3 傅立叶变换
之前说了,傅立叶级数是:
\displaystyle f(x)=a_0+\sum _{{n=1}}^{\infty }\left(a_{n}cos({\frac{2\pi n}{T}x})+b_{n}sin({\frac{2\pi n}{T}x})\right),a_0\in \mathbb {R}\\
这里有正弦波,也有余弦波,画频域图也不方便,通过欧拉公式,可以修改为复数形式(请参考“代数细节”一文):
\displaystyle f(x)=\sum _{{n=-\infty }}^{\infty }c_{n}\cdot e^{{i{\tfrac {2\pi nx}{T}}}}\\
其中:
\displaystyle c_{n}={\frac{1}{T}}\int _{{x_{0}}}^{{x_{0}+T}}f(x)\cdot e^{{-i{\tfrac {2\pi nx}{T}}}}\ dx\\
复数形式也是向量,可以如下解读:
\displaystyle f(x)=\sum _{{n=-\infty}}^{\infty}\underbrace{c_{n}}_{对应基的坐标}\cdot \underbrace{e^{{i{\tfrac {2\pi nx}{T}}}}}_{正交基}\\
不过 c_{n} 是复数,不好画频域图,所以之前讲解全部采取的是三角级数。
周期推向无穷的时候可以得到:
\left. \begin{align*} \displaystyle f(x)=\sum _{{n=-\infty }}^{\infty }c_{n}\cdot e^{{i{\tfrac {2\pi nx}{T}}}}\\ T=\infty \end{align*} \right\} \implies f(x) = \int _{-\infty }^\infty F(\omega )\ e^{i\omega x}\, d\omega \\
上面简化了一下,用 \omega 代表频率。
F(\omega ) 大致是这么得到的:
\left. \begin{align*} c_{n}={\frac{1}{T}}\int _{{x_{0}}}^{{x_{0}+T}}f(x)\cdot e^{{-i{\tfrac {2\pi nx}{T}}}}\ dx\\ T=\infty \end{align*} \right\} \implies F(\omega )=\frac{1}{2\pi }\int _{-\infty }^\infty f(x)\ e^{-i\omega x}\, dx \\
F(\omega ) 就是傅立叶变换,得到的就是频域曲线。
下面两者称为傅立叶变换对,可以相互转换:
f(x)\iff F(\omega )\\
正如之前说的,这是看待同一个数学对象的两种形式,一个是函数,一个是向量。
更多内容推荐 马同学图解数学 系列教程
结合自己的理解写点。
这个帖子分三个部分,第一部分为怎么从傅里叶级数推导出傅里叶变换,第二部分为两者的联系 ~~第三个为通过傅里叶级数求取傅里叶变换的例子。
不好意思我update了,后面还加了一些内容。
[19/04/2017] 看到大家继续点赞,那我再加点有关傅立叶级数的理解吧,本应当放到第一节,但是因为公式都编号了,不想改了。
- 正交函数基的概念
- 傅立叶级数和正交多项式级数
- 正交多项式和泰勒级数展开
- 正交概念、级数展开在工程中的应用
- 【19/04/2017】傅立叶级数的直观理解
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
傅里叶变换的由来
傅里叶级数适用于周期信号中,下面给出其表达式:
\tilde{x}(t) =\sum_{k=-\infty }^{+\infty }{a_{k}e^{jk\omega _{0} t} } (1)
a_{k} =\frac{1}{T} \int_{-T/2}^{T/2}\tilde{x}(t)e^{-jk\omega_{0}t }dt (2)
周期的意义在于限定傅里叶系数的积分公式 (如(2)所示) 的积分上下限,把公式(1)代入到(2)中可以发现,(2)式子左右恒等,其中利用到了e指数的正交性。
那如果是非周期信号呢?公式(1)中的 \omega _{0} 都已经不存在了(或者说是无穷小),此时时域信号便不可能写成如式子(1)级数的形式。但数学家们不甘心啊,如果把傅里叶只限定在周期信号,世界得多无趣啊。好,那就试着能不能重新定义非周期信号的傅里叶变换呢?数学家们思索着,这两种信号的区别在于一个是有固定的基频,另外一个基频无穷小。哎,等等?好像灵感来了,无限小的求和概念不就对应着积分嘛!那我们就尝试这能不能从这个角度来推导出非周期信号的傅里叶变换呢,好的,那我们试试吧。
考虑上述两个信号, \tilde{x}(t) 对应为 x(t) 的周期延展。对于 \left| t\right| \leq T/2 , 有 x(t)=\tilde{x}(t) 。对于周期信号 \tilde{x}(t) ,对应的傅里叶系数为
a_{k} =\frac{1}{T} \int_{-T/2}^{T/2}\tilde{x}(t)e^{-jk\omega_{0}t }dt =\frac{1}{T} \int_{-T/2}^{T/2}x(t)e^{-jk\omega_{0}t }dt =\frac{1}{T} \int_{-\infty }^{+\infty }x(t)e^{-jk\omega_{0}t }dt (3)
现在定义 X(j\omega ) 为 Ta_{k} 的包络,其中的 k\omega _{0} 用 \omega 来代替, 注意,此处的定义只是一个notation的变化,没有改变方程任何的东西
X(j\omega )= \int_{-\infty }^{+\infty }x(t)e^{-j\omega t }dt (4)
显然, a_{k} 只是 X(j\omega ) 的等间隔采样
a_{k}=\frac{1}{T}X(jk\omega _{0}) (5)
注意,把傅里叶系数表示为包络的采样,应该算是数学家的直觉尝试,或者说是他们常用的技巧吧,因为 k\omega _{0} 取极限 \omega_{0} \rightarrow 0 有 k\omega _{0}=\omega , 方便后面进一步把级数转变成积分形式。其中没有把T集成 X(j\omega ) 中,应该算是大家的约定吧,没办法,只能按照那些大牛的爱好了~ 好,那现在我们把公式(5)代入公式(1)中
\tilde{x}(t) =\sum_{k=-\infty }^{+\infty }{\frac{1}{T}X(jk\omega _{0})e^{jk\omega _{0} t} } =\sum_{k=-\infty }^{+\infty }{\frac{1}{2\pi}X(jk\omega _{0})e^{jk\omega _{0} t} }\omega _{0} (6)
(6)式中只含有 \omega _{0} 和 k\omega _{0} , 此刻,数学家们开始笑了,万事具备,东风亦来,吼吼吼。 令公式(6)中的 \omega_{0} \rightarrow 0 , 也即 T\rightarrow +\infty , 此时 x(t)\rightarrow \tilde{x}(t) , 哇~好熟悉的感觉,瞬间少女变大嫂~~ 公式(6)为
x(t) = \lim_{T \rightarrow +\infty }{\tilde{x}(t) }= \lim_{\omega_{0} \rightarrow 0}{\tilde{x}(t) } =\frac{1}{2\pi} \int_{-\infty }^{+\infty } X(j\omega )e^{j\omega t} d\omega (7)
其中 X(j\omega ) 如公式(4)所定义~傅里叶级数的包络奥~在这里重新写下把
X(j\omega )= \int_{-\infty }^{+\infty }x(t)e^{-j\omega t }dt (8)
到了这里,数学家们才舒了一口气~~哈哈哈,攻城狮大笑,现在可以尽情灌水了~~~
=======================================================
傅里叶级数和傅里叶变换的关系
很多人说傅里叶技术用于周期信号,傅里叶变换用于非周期信号。那问题来了,周期信号的傅里叶变换是什么?并且和傅里叶级数的系数有什么关系?
为了解开这个谜团,我们先来热热身~来点预备知识。首先,周期信号可以由傅里叶级数表示,即e指数的求和形式,想到这一点,攻城狮开始猥琐的笑了起来,仿佛透视了对面的可爱妹子~~么么哒。。。周期信号的傅里叶变换的关键不就在于e指数的傅里叶变换嘛~~
直接给出e指数的傅里叶变换~
e^{jk\omega _{0}t}\rightarrow 2\pi \delta (\omega -k\omega _{0}) (9)
可以验证下~ 把(9)代入到 (7)式中
x(t) = \frac{1}{2\pi} \int_{-\infty }^{+\infty } 2\pi \delta (\omega - k\omega_{0})e^{j\omega t} d\omega =e^{jk\omega_{0}t}
(10)
而对于周期信号可以表示为傅里叶级数
\tilde{x}(t) =\sum_{k=-\infty }^{+\infty }{a_{k}e^{jk\omega _{0} t} } (11)
对周期信号进行傅里叶变换,即对公式(11)的e指数进行傅里叶变换~,借助公式(9),可以得到
X(j\omega ) = \sum_{k=-\infty }^{+\infty }{2\pi a_{k}} \delta (\omega -k\omega _{0}) (12)
可以看出,周期信号的傅里叶变换并不连续,并且都可以表示为一系列的脉冲叠加,其中脉冲前面的系数为 2\pi a_{k} , 即为 傅里叶系数的 2\pi 倍。
=======================================================
通过傅里叶级数求取傅里叶变换的例子
最经典的例子莫过于脉冲采样理论了
对于采样系统中,我们一般采用脉冲去对信号进行采样,脉冲信号可以表示为
x(t) =\sum_{k=-\infty }^{+\infty }\delta (t-kT) (13)
因为这是典型的周期信号,对应的傅里叶级数的系数为
a_{k} =\frac{1}{T} \int_{-T/2}^{T/2}\delta (t)e^{-jk\omega_{0}t }dt =\frac{1}{T} (14)
根据公式(12)其傅里叶变换为
X(j\omega ) = \sum_{k=-\infty }^{+\infty }{2\pi a_{k}} \delta (\omega -k\omega _{0})=X(j\omega ) = \sum_{k=-\infty }^{+\infty }{\frac{2\pi }{T} } \delta (\omega -k\omega _{0}) (15)
借助周期信号傅里叶系数和傅里叶变换的关系,可以很快求出周期信号的傅立叶变换。
==============================================
Update 一下有关正交展开吧。
Part 1: 正交函数基的概念
正交概念一般是定义在闭区间上的,假设这个闭区间为 [a,b] , 那么对于两个函数 g(x) 和 h(x) 的正交,说的是其内积为零,如下面公式所示
<g,h> = \int_a^bg(x)h(x)dx =0 (16)
假设函数列 {e_k(x)}, \ k =0,1,2,\cdots 是一组函数基,并满足
<e_m,\ e_n> = \int_{a}^{b} e_m (x)\cdot e_n (x) dx =\delta_{mn} = \left\{ \begin{array}{ll} 1 & m=n \\ 0 & m \neq n \\ \end{array} \right. (17)
根据魏尔斯特拉斯逼近定理:
- 闭区间上的连续函数可用多项式级数一致逼近;
- 闭区间上周期为 2\pi 的连续函数可用三角函数级数一致逼近.(其实可以用更加紧凑的方式表述:三角级数和多项式级数在C[a,b]中稠密)
可以知道闭区间上 [a,b] 上的连续函数 f(x) 可以用正交函数列 e_k(x) (多项式和三角级数) 来一致逼近
f(x) = \sum_{k=0}^{n}a_ke_k(x) (18)
根据最优理论,我们考虑其平方误差积分最小
\min_{\{\alpha_k\}}E = \min_{\{\alpha_k\}}\int_a^b \left(f(x)-\sum_{k=0}^n \alpha_k e_k(x)\right)^2dx (19)
根据多维函数求极极值理论,上述式子(19)对 \alpha_k 的导数等于零
\frac{\partial E}{\partial \alpha_k} = \frac{\partial }{\partial \alpha_k} \int_{a}^{b} \left( f(x) - \sum_{i=1}^n \alpha_i e_i(x) \right)^2dx =0 (20)
根据勒贝格测度的控制积分理论,对于闭区间上的连续函数 E(x,\alpha_k) ,如式子(20),其微分和积分符号可以交换顺序, 详细参考我的实变函数Notes ,控制收敛定理84-85页。
http:// pan.baidu.com/s/1kVJSHW N
于是有
\frac{\partial E}{\partial \alpha_k} = \int_{a}^{b} \frac{\partial }{\partial \alpha_k}\left( f(x) - \sum_{i=1}^n \alpha_i e_i(x) \right)^2dx =0 (21)
进一步有
\int_{a}^{b} \left( f(x) - \sum_{i=1}^n \alpha_i e_i(x) \right)\cdot e_k(x)dx =0 (22)
根据我们的正交假设(17)显然有如下结论
\alpha_k = \int_{a}^{b} f(x) e_k(x)dx ,\quad k=1,2,3,\cdots (23)
魏尔斯特拉斯定理的意义
显然我们可以用上述正交基对任意的连续函数函数去逼近,也总归会得到一个最优逼近下的一组系数 \{\alpha_k\} ,但是这个最优逼近是否能够无限逼近原函数?魏尔斯特拉斯定理的意义就在保证了多项式和三角级数可以一致逼近闭区间上的连续函数,也就是说当正交级数的项达到一定的数目时,在整个闭区间上无限逼近原函数了,严格来讲,就是闭区间上最大的逼近误差可以控制到任意小。
简而言之,闭区间上的连续函数可以等效为无数正交函数基(如傅立叶)的线性叠加,这样的好处就在于不同函数之间的区别现在量化成了不同的正交系数 \{\alpha_k\} 的区别,这种正交变换的好处是,打个比方,函数 f(x) 类比成李雷家的猪, g(x) 类比为韩梅梅家的小麦,现在李雷想吃面粉,韩梅梅想吃肉,于是要想要交换下。但是他们并不知道这只猪该换几斤麦子啊,那好,现在有一个专门的机构,能够把不同物品使用统一种货币(正交基)来量化,于是下次见面直接说李雷的猪多少钱( f(x) 的傅立叶系数),韩梅梅家的麦子多少钱( g(x) 的傅立叶系数 ),这样大家就能够快速的有一个量化的比较了。
============================================
Part 2: 傅立叶级数和正交多项式级数
让这个正交函数基为 e^{jk x} ,抑或( 1, \sin x, \cos x, \sin 2x, \cos 2x,\cdots ),这就在理论上得到了 傅立叶级数 。
我们也可以探索把多项式作为我们的基 1,x,x^2,x^3,\cdots ,但是这组基并不是正交的,不过没关系,我们可以用格拉姆-施密特方法正交化,然后就得到了正交的多项式基,也就是 勒让德多项式 ,如下图。
==============================================
Part 3: 正交多项式和泰勒级数展开
既然讲到了正交多项式,那么不妨多说两句。大家注意到公式(19),在闭区间上使用有限项的基来逼近一个函数,这是全局的逼近,我们思考和泰勒展开有什么不同,泰勒展开只是在某个点附近逼近,当展开的级数越多,那么函数逼近的范围就越广。大家也许会注意到对于正交级数在闭区间上展开的系数使用积分来求取的,而泰勒展开的系数确是通过微分操作求取。
简而言之,正交级数(如勒让德级数)是全局的逼近,而泰勒展开是局域的。从上图可以看出,对于正交勒让德级数,从 n 到 n+1 维,需要全部计算前面所有的系数,所以随着 n 的增加,正交级数也越来越复杂(这句话的理解是把勒让德级数整理成泰勒级数的样子,那么会发现,每增加一个维度,所有多项式前面的系数都会变化,意味着这些系数重新算过了)。但是对于泰勒级数,每增加一个维度,只需要计算增加的那个维度的导数即可,前面基的系数都不用变。
==============================================
Part 4: 向量正交
我们回顾下公式(16)
<f,g>=\int_a^b f(x)g(x)dx
如果我们把区间 [a,b] 离散化, 在里面采样 m 个点,那么 f(x),g(x) 就相应变成了 m\times 1 维度的向量了,积分也就成了离散和,也就是内积了,(16)可以变为
\sum_{i=1}^{m} f(x_i)\cdot g(x_i) = <\hat{f},\hat{g}> (24)
那么正交的含义也就顺理成章地成了
\sum_{i=1}^{m} f(x_i)\cdot g(x_i) = <\hat{f},\hat{g}>=0 (25)
所以,函数正交定义的形式和向量正交其实是内恰的,对于线性代数中的向量之间的投影同样可以类比到函数空间中,线性代数中的格拉姆-施密特正交化方法也就可以同样适用于函数基的正交化。把上述正交函数的概念类比到离散的代数空间,我们就从傅立叶级数顺理成章推广到了离散傅立叶变换DFT。
可以参考一个帖子
如何通俗地解释什么是离散傅里叶变换? - psyduck 的回答 - 知乎
Part 4: 正交概念、级数展开在工程中的应用
我只说我接触过的
- 对于通信的CDMA编码,Spread code是一系列的正交码,每个人分配一个这样的spread code作为身份的验证, 且这些码相互之间正交,所以我们接受到基站传回来的信息时,通过内积方式可以唯一解出属于自己的那部分信息,而不用担心别人的信息对自己信息的串扰。
- 对于通信的OFDM,本质上是把高速率的信息流拆分成若干的低速率信息流,然后通过载波聚合的方式正交地加载在同一个载波上,接收端通过积分就可以恢复这些信息,然后把多个低速率的信息流恢复为告诉串行的高速数据流。不同的通信编码方式,其共同点就是正交。
- 在电路理论中,泰勒级数和傅立叶级数也用的非常多,这俩好基友是非线性电路分析的不二法宝。很多非线性电路如功率放大器,整流电路的效率,输出功率的计算,无不利用到了这些级数。还有一些微波半导体器或者系统件行为建模方法,也是用到了这些技术。更加复杂的就是从一维变量的拓展到高维了。