【信号与系统学习笔记】—— 傅里叶变换1 从零开始推导傅里叶变换(详细易懂版)

虽然之前我的 B l o g Blog 里面也有涉及到傅里叶变换的文章,但是都感觉有点零星,今天打算祭出一篇长文,详细地剖析傅里叶变换的本质,从零开始推导傅里叶变换。

一、从正弦波的合成说起

说来也真是佩服傅里叶他老先生及其敏锐的洞察力,他认为:所有周期信号都可以用若干个正弦波叠加形成。, 我们看图说话,下面三张图,分别是: y = 0.5 + 0.637. c o s ( x ) y = 0.5 + 0.637. c o s ( x ) 0.212. c o s ( 3 x ) y = 0.5 + 0.637. c o s ( x ) 0.212. c o s ( 3 x ) + 0.127. c o s ( 5 x ) y = 0.5 + 0.637.*cos(x)\\ y=0.5+0.637.*cos(x)-0.212.*cos(3*x)\\ y=0.5+0.637.*cos(x)-0.212.*cos(3*x)+0.127.*cos(5*x)
我们看看这三个由正弦函数叠加得到的波形长什么样:
在这里插入图片描述
我们发现,这些正余弦函数的叠加居然真的慢慢向矩形波的形状靠拢了!

因此,我们给出实傅里叶级数的公式:
f ( t ) = a 0 2 + k = 1 ( a k c o s k ω 0 t + b k s i n k ω 0 t ) f(t) = \frac{a_0}{2} + \sum_{k=1}^{∞}(a_kcoskω_0t + b_ksinkω_0t)

1.1 复傅里叶级数的引入以及求解

实傅里叶级数的表示可能还是不够直观,我们想要一种新的表现方式,这时我们需要用到欧拉公式: c o s ( k ω 0 t ) + j s i n ( k ω 0 t ) = e j k ω 0 t cos(kω_0t) + jsin(kω_0t) = e^{jkω_0t}
因此,我们将欧拉公式带入上面的实傅里叶级数: f ( t ) = a 0 2 + k = 1 ( a k c o s k ω 0 t + b k s i n k ω 0 t ) = a 0 2 + 1 2 k = 1 [ ( a k e j k ω 0 t + a k e j k ω 0 t ) j ( b k e j k ω 0 t b k e j k ω 0 t ) ] = a 0 2 + 1 2 k = 1 ( a k j b k ) e j k ω 0 t + 1 2 k = 1 ( a k + j b k ) e j k ω 0 t = k = 0 a k 2 + 1 2 k = 1 ( a k j b k ) e j k ω 0 t + 1 2 k = 1 ( a k + j b k ) e j k ω 0 t = k = + c k e j k ω 0 t \begin{aligned} f(t) &= \frac{a_0}{2} + \sum_{k=1}^{∞}(a_kcoskω_0t + b_ksinkω_0t)\\ &=\frac{a_0}{2} + \frac{1}{2}\sum_{k=1}^{∞}[(a_ke^{jkω_0t} + a_ke^{-jkω_0t})-j(b_ke^{jkω_0t}-b_ke^{-jkω_0t})]\\ &=\frac{a_0}{2} + \frac{1}{2}\sum_{k=1}^{∞}(a_k - jb_k)e^{jkω_0t} + \frac{1}{2}\sum_{k=1}^{∞}(a_k + jb_k)e^{-jkω_0t}\\ &=\sum_{k=0}\frac{a_k}{2} +\frac{1}{2}\sum_{k=1}^{∞}(a_k - jb_k)e^{jkω_0t} + \frac{1}{2}\sum_{k=-1}^{-∞}(a_{-k} + jb_{-k})e^{jkω_0t}\\ &=\sum_{k = -∞}^{+∞}c_ke^{jkω_0t} \end{aligned}

因此,我们就得到了复傅里叶级数的表示!

那么,这里有一个未知数 c k c_k ,我们如何求解呢?我们来看看: f ( t ) = k = + c k e j k ω 0 t f ( t ) = c m e j m ω 0 t + k = , k m + c k e j k ω 0 t f ( t ) e j m ω 0 t = c m + k = , k m + c k e j ( k m ) ω 0 t T 2 T 2 f ( t ) e j m ω 0 t = T 2 T 2 c m + T 2 T 2 k = , k m + c k e j ( k m ) ω 0 t T 2 T 2 f ( t ) e j m ω 0 t = T c m + 0 c m = 1 T T 2 T 2 f ( t ) e j m ω 0 t \begin{aligned} f(t) &= \sum_{k = -∞}^{+∞}c_ke^{jkω_0t}\\ f(t)&=c_me^{jmω_0t}+\sum_{k = -∞,k≠m}^{+∞}c_ke^{jkω_0t}\\ f(t)e^{-jmω_0t} &=c_m+\sum_{k = -∞,k≠m}^{+∞}c_ke^{j(k-m)ω_0t}\\ \int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)e^{-jmω_0t} &= \int_{-\frac{T}{2}}^{\frac{T}{2}}c_m+\int_{-\frac{T}{2}}^{\frac{T}{2}}\sum_{k = -∞,k≠m}^{+∞}c_ke^{j(k-m)ω_0t}\\ \int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)e^{-jmω_0t} &= Tc_m+0\\ c_m &= \frac{1}{T}\int_{-\frac{T}{2}}^{\frac{T}{2}}f(t)e^{-jmω_0t} \end{aligned}

1.2 到底为什么要引入复数?

刚刚在 1.1 节我们在讨论为什么要用复数的线性叠加来代替原来的信号时,解释得有点牵强。

难道仅仅是因为看起来一堆不同幅度的正弦波可能可以叠加成一些其他新的波形,我们就用正余弦函数来表示、然后又根据欧拉公式,我们就可以用复数的线性叠加来表示信号吗?

说到底,还是没有讲清楚引入复数的意义!

其实,我们考虑用复指数信号来合成信号的原因是:复指数信号具有保真性。也就是说,一个复指数信号经过一个系统,输出的信号依然还是复指数,只不过幅度或频率改变了,我们看看为什么?

首先分析一下连续时间信号,假设我们的输入信号是 x ( t ) = e s t x(t) = e^{st} ,系统的单位冲激响应是 h ( t ) h(t) ,那么根据我们之前 B l o g Blog 中学习的卷积原理,我们可以知道, x ( t ) x(t) 输入系统得到的输出是: y ( t ) = + h ( τ ) x ( t τ ) d τ = + h ( t τ ) e s ( t τ ) d τ = e s t + h ( τ ) e s τ d τ = e s t H ( s ) \begin{aligned} y(t) &= \int_{-∞}^{+∞}h(τ)x(t-τ)dτ\\ &=\int_{-∞}^{+∞}h(t-τ)e^{s(t-τ)} dτ\\ &=e^{st}\int_{-∞}^{+∞}h(τ)e^{-sτ}dτ\\ &=e^{st}H(s) \end{aligned}

而这个 H ( s ) H(s) 是一个复常数,如果信号可以用复指数表示,那么信号经过系统之后的输出表示就非常简单,同样地,对于离散时间信号也是一样,设输入为 : x [ n ] = z n x[n] = z^{n}
y [ n ] = k = + h [ k ] x [ n k ] = k = + h [ k ] z n k = z n k = + h [ k ] z k = z n H ( z ) \begin{aligned} y[n] &= \sum_{k=-∞}^{+∞}h[k]x[n-k]\\ &=\sum_{k=-∞}^{+∞}h[k]z^{n-k}\\ &=z^n\sum_{k=-∞}^{+∞}h[k]z^{-k}\\ &=z^nH(z) \end{aligned}

至此,我们得到了复傅里叶级数的表示方法,以及复傅里叶系数的计算公式。但是,这些有什么用?为什么需要用这样的傅里叶级数形式来表示呢??

1.3 复傅里叶级数的意义——频谱

复傅里叶级数最好的用途就是表示信号的频谱!何谓之信号的频谱?那就要牵扯到频域了。

我们平时所接触到的信号,大多是以时域的形式和我们见面的。例如我们常听见的音乐信号,我们可以非常熟悉它时域上的表示:

但是,学过乐器的同学们应该更熟悉音乐信号的另外一种表示形式——音符:

不同的音符,代表着不同的频率成分。我们看看复傅里叶级数的公式: f ( t ) = k = + c k e j k ω 0 t f(t) = \sum_{k = -∞}^{+∞}c_ke^{jkω_0t}

所以我们发现, f ( t ) f(t) 由不同的频率成分组成 e j k ω 0 t e^{jkω_0t} ,也就代表了不同的音符,而每种音符所弹奏的声音大小,也就是 e j k ω 0 t e^{jkω_0t} 的系数 c k c_k c k c_k 可以是复数)

比如我们有这样一个信号: f ( t ) = e j 2 ω 0 t + 5 e j ω 0 t + 6 f(t) = e^{j2ω_0t} + 5e^{jω_0t} + 6 ,那么它的频谱就可以表示成:

也就是说,计算复傅里叶系数的过程,就是计算信号频谱的过程!

二、周期信号的频谱(线谱)

我们知道如何计算频谱了,这算是迈出了一大步:因为我们处理信号的能力,从时域扩展到了频域。

我们先来看看下面这个周期为: T 0 T_0 ,脉冲宽度为 T 0 2 \frac{T_0}{2} 的矩形周期信号的频谱:

c 0 = 1 T 0 T 0 2 T 0 2 f ( t ) d t = 1 T 0 T 0 4 T 0 4 1 d t = 0.5 c_0 = \frac{1}{T_0}\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}}f(t)dt =\frac{1}{T_0}\int_{-\frac{T_0}{4}}^{\frac{T_0}{4}}1dt = 0.5

c k = 1 T 0 T 0 2 T 0 2 f ( t ) e j k ω t d t = 1 T 0 T 0 4 + T 0 4 e j k ω t d t = 1 T 0 T 0 4 + T 0 4 ( c o s ( k ω t ) j s i n ( ω t ) ) d t = 1 T 0 T 0 4 + T 0 4 c o s ( k ω t ) d t j T 0 T 0 4 + T 0 4 s i n ( k ω t ) d t = 1 T 0 k ω T 0 4 + T 0 4 c o s ( k ω t ) d ( k ω t ) = 2 s i n k ω T 0 4 T k ω \begin{aligned} c_k &= \frac{1}{T_0}\int_{-\frac{T_0}{2}}^{\frac{T_0}{2}}f(t)e^{jkωt}dt\\ &=\frac{1}{T_0}\int_{-\frac{T_0}{4}}^{+\frac{T_0}{4}}e^{jkωt}dt\\ &=\frac{1}{T_0}\int_{-\frac{T_0}{4}}^{+\frac{T_0}{4}}(cos(kωt)-jsin(ωt))dt\\ &=\frac{1}{T_0}\int_{-\frac{T_0}{4}}^{+\frac{T_0}{4}}cos(kωt)dt - \frac{j}{T_0}\int_{-\frac{T_0}{4}}^{+\frac{T_0}{4}}sin(kωt)dt \\ &=\frac{1}{T_0kω}\int_{-\frac{T_0}{4}}^{+\frac{T_0}{4}}cos(kωt)d(kωt)\\ &=\frac{2sin\frac{kωT_0}{4}}{Tkω}\\ \end{aligned}
又因为: ω = 2 Π T = 2 Π T 0 ω = \frac{2Π}{T} = \frac{2Π}{T_0} ,因此: 2 s i n k ω T 0 4 T k ω = 1 2 s i n k Π 2 k Π 2 \frac{2sin\frac{kωT_0}{4}}{Tkω}=\frac{1}{2}\frac{sin\frac{kΠ}{2}}{\frac{kΠ}{2}}
这里我们引入辛格函数 sinc: s i n c ( x ) = s i n ( Π x ) Π x sinc(x) = \frac{sin(Πx)}{Πx} 它长这样:

那么,我们上面那个占空比为 1 2 \frac{1}{2} 的矩形信号的线谱就可以表示为: X ( k ) = 1 2 s i n c ( k 2 ) X(k) = \frac{1}{2}sinc(\frac{k}{2})
信号与它对应的线谱如下图所示:

如果我们改变占空比,即矩形信号的脉冲宽度不变,还是 T 0 2 \frac{T_0}{2} ,但是周期变为 T = 2 T 0 T = 2T_0 .即占空比变为 1/4:

我们先看看 c 0 c_0 c 0 = 1 2 T 0 T 0 T 0 f ( t ) d t = 1 2 T 0 T 0 4 T 0 4 d t = 0.25 \begin{aligned} c_0 &= \frac{1}{2T_0}\int_{-T_0}^{T_0}f(t)dt\\ &=\frac{1}{2T_0}\int_{-\frac{T_0}{4}}^{\frac{T_0}{4}}dt=0.25 \end{aligned}
然后是 c k c_k c k = 1 2 T 0 T 0 4 T 0 4 e j k ω t d t = 1 2 T 0 T 0 4 T 0 4 ( c o s ( k ω t ) + j s i n ( k ω t ) ) d t = 1 2 T 0 1 k ω 2 s i n ( k ω T 0 4 ) = s i n ( k Π 4 ) k Π = 1 4 s i n ( k Π 4 ) k Π 4 = 1 4 s i n c ( k 4 ) \begin{aligned} c_k &= \frac{1}{2T_0}\int_{-\frac{T_0}{4}}^{\frac{T_0}{4}}e^{jkωt}dt\\ &=\frac{1}{2T_0}\int_{-\frac{T_0}{4}}^{\frac{T_0}{4}}(cos(kωt)+jsin(kωt))dt\\ &=\frac{1}{2T_0}\frac{1}{kω}2sin(kω\frac{T_0}{4})\\ &=\frac{sin(\frac{kΠ}{4})}{kΠ}\\ &=\frac{1}{4}\frac{sin(\frac{kΠ}{4})}{\frac{kΠ}{4}}\\ &=\frac{1}{4}sinc(\frac{k}{4}) \end{aligned}

同样地,我们再来看看这个占空比为 1 4 \frac{1}{4} 的矩形波和它对应的线谱:

下面我们直接给出占空比是 1 8 \frac{1}{8} 的矩形信号和它对应的频谱(大家自己可以推导一下)

归纳一下我们刚刚计算的,不同占空比矩形信号的频谱(线谱)的表达式规律:如果我们设矩形信号的占空比为: 1 n \frac{1}{n} ,那么这个矩形周期信号的线谱就可以表示成: X ( k ) = 1 n s i n c ( k n ) X(k) = \frac{1}{n}sinc(\frac{k}{n})

这个表达式我们发现:占空比越小, c k c_k 的幅度就越小,而且谱线与谱线之间的间隙就越来越小,谱线越密集。

三、非周期信号的频谱(连续谱)

从上面的分析发现:随着T的增大,线谱中不同频率的谱线的间距越来越小,数量也越来越多,这样不太利于我们对频率的分析,我们引入了连续谱,或者我们叫做频谱密度曲线

为了更好地理解:频谱密度曲线,我们先来看看概率密度曲线的意义:

红色的曲线就是x的概率密度函数pdf曲线。如果我现在这样问你:P(x = 10) = ?
乍一看,x = 10对应曲线的纵坐标在0.16附近,我们能说x = 10的概率是0.16吗??

答案是:NO!,P(x=10) = 0!
正如我们在生活中所说的当x=10,我们一般会把10.01,10.001,9.99等等这样的数都当作10,我们以x为某地的降雨量为例,你能保证当天降雨的总量刚刚好在10mm,一滴不多一滴不少吗?

我们上面所讨论的问题,都基于一个前提:就是我们的自变量x是一个连续随机变量,在连续随机变量的概率密度曲线中,x准确等于任何一个数的概率都是0!

那么要怎么表示概率呢?我们可以用一个区间,比如说x在[9.9, 10.1]区间的概率是多少。这样就会取得一个确定的概率P. 在微积分的知识里我们知道,在pdf曲线中计算x落在区间[9.9, 10.1]上的概率就应该是曲线在[9.9, 10.1]那段的面积: 9.9 10.1 f ( x ) d x \int_{9.9}^{10.1}f(x)dx

近似可以看作上图的蓝色矩形的面积。
因此,概率密度曲线中某一x范围 [ x , x + x ] [x, x+△x] 概率,就是曲线在 [ x , x + x ] [x, x+△x] 这一范围下与横轴围成的区域的面积

概率密度函数,频谱密度函数,这两者其实内涵是类似的!

概率密度 P ( x ) P(x) 对应的是概率,那么曲线在 [ x , x + x ] [x, x+△x] 这一范围下与横轴围成的区域的面积就是x在 [ x , x + x ] [x, x+△x] 这一范围下的概率
频谱密度 X ( f ) X(f) 对应的是 c k c_k ,那么曲线在 [ f , f + f ] [f, f+△f] 这一范围下与横轴围成的面积就是f在 [ f , f + f ] [f, f+△f] 这一范围下的 c k c_k

而面积可以近似地以矩形的面积代替,那么矩形的底就是 f △f ,高就是 c k f \frac{c_k}{△f} ,如下图:

因此,所有的 c k f \frac{c_k}{△f} 就构成了频谱密度曲线
其中,在上图, f △f 是信号基波的频率 f 0 f_0 ,和信号的周期 T 0 T_0 有关

四、线谱与连续谱的关系

4.1 周期信号的连续谱表示

我们在刚刚说了: c k f \frac{c_k}{△f} 就构成了频谱密度曲线,那么知道: c k f \frac{c_k}{△f} 的表达式就很关键了:

我们从周期矩形信号的 c k c_k 值入手: c k = 1 n s i n c ( k n ) c_k = \frac{1}{n}sinc(\frac{k}{n})
如果设矩形信号的脉冲宽度是: τ τ ,周期是 T 0 T_0 (这里大家注意区分一下:我们现在是令周期不变,就是 T 0 T_0 ,改变脉冲宽度而改变占空比。我们上文计算周期矩形波时是改变周期,保持脉冲宽度不变)
那么,占空比就是: τ T 0 \frac{τ}{T_0}

所以,原式变为: c k = τ T 0 s i n c ( k τ T 0 ) c_k = \frac{τ}{T_0}sinc(\frac{kτ}{T_0})

既然我们现在想找周期信号的连续谱,就意味着我们想计算: c k f \frac{c_k}{△f}
c k f = c k f 0 = c k T 0 = τ s i n c ( k τ f 0 ) (1) \begin{aligned} \frac{c_k}{△f} &= \frac{c_k}{f_0} = c_kT_0\\ &=τsinc(kτf_0)\tag{1} \end{aligned}
我们看这个式子啊: f 0 f_0 是这个周期信号的基波频率,因为它可以分解成若干个不同频率成分的信号叠加,那么 k f 0 kf_0 不就相当于我们前面的 ω = k ω 0 ω = kω_0 吗!因此,我们就用 f f 来替换 k f 0 kf_0
c k f = τ s i n c ( τ f ) (2) \frac{c_k}{△f} = τsinc(τf)\tag{2}

因为(2)式没有 k,而 f f 又是连续的,所以 τ s i n c ( τ f ) τsinc(τf) 是一个连续函数!那么,周期信号的连续谱概率密度函数: τ s i n c ( k τ f 0 ) τsinc(kτf_0) 不就是以采样频率 f 0 f_0 对这个连续信号 τ s i n c ( τ f ) τsinc(τf) 进行采样吗!

我们先看看对占空比 50% 的信号以 f 0 f_0 为采样频率进行采样得到的连续谱长什么样:

同样,对比一下其他占空比的信号的连续谱:

下面这个图我没有把对应的线谱画出来,不然太密了就看不清连续谱的样子了:

4.2 非周期矩形信号的连续谱

我们可以发现:
第一张采样得到的连续谱,是周期为 T 0 T_0 的矩形信号对 τ s i n c ( τ f ) τsinc(τf) f 0 f_0 的频率采样

第二张采样得到的连续谱,是周期为 2 T 0 2T_0 的矩形信号对 τ s i n c ( τ f ) τsinc(τf) 1 2 T 0 \frac{1}{2T_0} 的频率采样

第三张采样得到的连续谱,是周期为: 3 T 0 3T_0 的矩形信号对 τ s i n c ( τ f ) τsinc(τf) 1 3 T 0 \frac{1}{3T_0} 的频率采样

我们发现,随着周期矩形信号的频率不断增大,采样得到的连续谱就越来越接近信号 τ s i n c ( τ f ) τsinc(τf)
所以,我们可以推出:在 T无穷大的时候,也就是非周期矩形信号,它的连续谱就是: τ s i n c ( τ f ) τsinc(τf)

五、傅里叶变换的引入

知道了周期信号和非周期信号都可以用连续谱(即频谱密度函数)表示,那么
下面,我们就来看看信号频谱密度的计算: c k f = c k T 0 = T 0 2 + T 0 2 x ( t ) e j k ω 0 t d t = T 0 2 + T 0 2 x ( t ) e j k 2 Π f 0 t d t = T 0 2 + T 0 2 x ( t ) e j 2 Π f t d t \begin{aligned} \frac{c_k}{△f} &=c_kT_0 = \int_{-\frac{T_0}{2}}^{+\frac{T_0}{2}}x(t)e^{-jkω_0t}dt\\ &=\int_{-\frac{T_0}{2}}^{+\frac{T_0}{2}}x(t)e^{-jk2Πf_0t}dt\\ &=\int_{-\frac{T_0}{2}}^{+\frac{T_0}{2}}x(t)e^{-j2Πft}dt\\ \end{aligned}

当T=∞时,就有: X ( f ) = + x ( t ) e j 2 Π f t d t = + x ( t ) e j ω t d t X(f) = \int_{-∞}^{+∞}x(t)e^{-j2Πft}dt = \int_{-∞}^{+∞}x(t)e^{-jωt}dt
这就是大名鼎鼎的傅里叶变换公式!!

发布了140 篇原创文章 · 获赞 411 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44586473/article/details/104524236