前言

在现实世界中,比如有一个较为复杂的函数f(x)f(x)f(x),直接这个函数f(x)f(x)f(x),非常复杂,而如果把它变成若干个简单的函数,分别计算这些简单的函数,这样一个复杂的函数就很容易求解。

那么傅里叶变换的含义主要的目的:就是将一个 f(x)f(x)f(x)
函数拆分成若干个a(x)a(x)a(x)子函数之和。比如f(x)=a1(x)+a2(x)+...+an(x)f(x) = a_1(x) + a_2(x) + ... + a_n(x)f(x)=a1​(x)+a2​(x)+...+an​(x),这里的a1(x)a_1(x)a1​(x)、a2(x)a_2(x)a2​(x)都是一些简单的函数。那么我们也就理解了傅里叶函数的意义,一个复杂的函数很难计算,如果能把它拆分成很多简单的子函数,分别计算子函数,然后再合起来,那么对待复杂的函数也不会害怕了。

所以傅里叶变换会在数字信号处理中会那么大放异彩,主要原因是,傅里叶函数不仅可以将复杂的信号函数f(x)f(x)f(x)拆分成很多子函数,而且这些子函数还有自己明确的物理意义

级数与傅立叶级数

首先介绍一下级数的作用,如下图来自《高等数学下》,求一个圆的面积,那么采用切割规则的方法,逐渐逼近圆弧,切割次数的越大误差越小。当然你知道求圆的面积公式是啥样子了,然而在现实世界中,我们是没有现成的公式可以使用,就是采用这种逐步逼近的方式进行计算。

圆的面积S(x)=a1(x)+a2(x)+...+an(x)S(x) = a_1(x) + a_2(x) + ... + a_n(x)S(x)=a1​(x)+a2​(x)+...+an​(x),分成a1(x)a_1(x)a1​(x),a2(x)a_2(x)a2​(x),an(x)a_n(x)an​(x)面积,这些面积都是规则的面积,可以很容易求出,然后逐步逼近到真实的圆面积。

那么理解了级数的作用后,可能还会讨论级数的收敛性质啥的,然而在工程中我们面对东西不是那么复杂和抽象,所以这个不用讨论。我们在幂级数中结合普通的现实生活,一个函数f(x)f(x)f(x)都是可以展开的,展开式如下:f(x)=f(x0)+f′(x0)(x−x0)+...+1n!f(n)(x0)(x−x0)nf(x) = f(x_0) + f^{'}(x_0)(x - x_0) + ... + \frac{1}{n!}f^{(n)}(x_0)(x - x_0)^nf(x)=f(x0​)+f′(x0​)(x−x0​)+...+n!1​f(n)(x0​)(x−x0​)n。

如果觉得把一个函数f(x)f(x)f(x)展开成幂级数这种形式,当然了,我们还可以对一个函数展开成三角函数的形式,那么这种展开形式就是傅里叶级数。傅里叶级数在信号处理里,是一个必不可少的工具,既然是工具那么就不会太难。

比如一个信号f(x)f(x)f(x)展开成A0+∑n=1∞Ansin(nωt+φn)A_0 + \sum_{n = 1}^{\infty}A_{n}sin(n{\omega}t + \varphi_n)A0​+∑n=1∞​An​sin(nωt+φn​)
,那么对于这种展开,就成为傅里叶级数展开。通过三角变换公式,可以将该式子转为
f(x)=a02+∑n=1∞(ancosnx+bnsinnx)f(x) = \frac{a_0}{2} + \sum_{n = 1}^{\infty}(a_{n}cos{nx} + b_{n}sin{nx})f(x)=2a0​​+∑n=1∞​(an​cosnx+bn​sinnx)

值得注意的是信号f(x)f(x)f(x)能够展开成这种形式的话,这个函数必须要是一个周期函数。查看如下图周期函数,是由这些函数
2sin(x)+0.2sin(10x)+0.1sin(100x)+0.01sin(1000x)2sin(x)+0.2sin(10x)+0.1sin(100x)+0.01sin(1000x)2sin(x)+0.2sin(10x)+0.1sin(100x)+0.01sin(1000x) 组合相加而成的。

上面的讨论,我们知道了一个周期函数f(x)f(x)f(x)能够通过傅里叶级数展开成若干个三角函数组合;还有一个令人兴奋的事情是,通过欧拉公式,可将三角函数转换成复数形式。欧拉公式如:cos(t)=eit+e−it2cos(t) = \frac{e^{it} + e^{-it}}{2}cos(t)=2eit+e−it​ 和 sin(t)=eit−e−it2isin(t) = \frac{e^{it} - e^{-it}}{2i}sin(t)=2ieit−e−it​。

而周期为lll函数f(x)f(x)f(x)傅里叶级数是:f(x)=a02+∑n=1∞(ancosnπxl+bnsinnπxl)f(x) = \frac{a_0}{2} + \sum_{n = 1}^{\infty}(a_{n}cos{\frac{n{\pi}x}{l}} + b_{n}sin{\frac{n{\pi}x}{l}})f(x)=2a0​​+∑n=1∞​(an​coslnπx​+bn​sinlnπx​),

那么经过整理和推导(推导过程博文很多,工程中我们不用关心,只关心最终的公式的代表的意义),可以得出周期为lll函数f(x)f(x)f(x)对应的复数域下的傅里叶展开级数为:f(x)=∑n=−∞∞cneinπxlf(x) = \sum_{n = -\infty}^{\infty}c_ne^{i \frac{n{\pi}x}{l}}f(x)=∑n=−∞∞​cn​eilnπx​ 。

到这里得到两个展开式,一个是实数域,一个是复数域的,这些展开式各自组合后,都是表示周期为 lll 的函数f(x)。通过这两种的变换,我们可以发现到这个周期函数函数是不仅有实数的一种表达方式的。

实数域:f(x)=a02+∑n=1∞(ancosnπxl+bnsinnπxl)f(x) = \frac{a_0}{2} + \sum_{n = 1}^{\infty}(a_{n}cos{\frac{n{\pi}x}{l}} + b_{n}sin{\frac{n{\pi}x}{l}})f(x)=2a0​​+∑n=1∞​(an​coslnπx​+bn​sinlnπx​)

复数域:f(x)=∑n=−∞∞cneinπxlf(x) = \sum_{n = -\infty}^{\infty}c_ne^{i \frac{n{\pi}x}{l}}f(x)=∑n=−∞∞​cn​eilnπx​

本节小结:我们发现傅里叶级数与其他级数都是一样的,就是把一个函数拆开成若干个简单的函数,傅里叶级数也是如此,傅里叶级数是拆开成若干三角函数。

傅立叶变换

在傅里叶级数中,我们的主要做法是将一个周期函数展开,那么在现实中我们处理信号函数,该信号函数都是没有周期的;不过没关系,处理现实生活中的无周期信号,我们可以把它当成一个周期无线大的周期信号函数

这里不像上一节直接给出方程(上一节方程直接记住就行,不记住也可以查表就可以),这里的方程不好理解,要详细推导过程才能理解。

首先是傅里叶级数的表达形式:
f(t)=a02+∑n=1∞[ancos(nωt)+ancos(nωt)]f(t) = \frac{a_0}{2} +\sum^{\infty}_{n = 1}[a_n cos(n{\omega}t) + a_n cos(n{\omega}t)]f(t)=2a0​​+∑n=1∞​[an​cos(nωt)+an​cos(nωt)]
其中:
a0=2T∫t0t0+Tf(t)dta_0 = \frac{2}{T}\int_{t_0}^{t_0 + T}f(t)dta0​=T2​∫t0​t0​+T​f(t)dt
an=2T∫t0t0+Tf(t)cos(nωt)dta_n = \frac{2}{T}\int_{t_0}^{t_0 + T}f(t)cos(n{\omega}t)dtan​=T2​∫t0​t0​+T​f(t)cos(nωt)dt
bn=2T∫t0t0+Tf(t)sin(nωt)dtb_n = \frac{2}{T}\int_{t_0}^{t_0 + T}f(t)sin(n{\omega}t)dtbn​=T2​∫t0​t0​+T​f(t)sin(nωt)dt

欧拉公式如:
cos(t)=eit+e−it2cos(t) = \frac{e^{it} + e^{-it}}{2}cos(t)=2eit+e−it​ 和 sin(t)=eit−e−it2isin(t) = \frac{e^{it} - e^{-it}}{2i}sin(t)=2ieit−e−it​

将a0,an,bna_0, a_n, b_na0​,an​,bn​与欧拉公式带入傅里叶级数f(t)f(t)f(t)整理得到:
f(t)=1T∑n=−∞+∞∫t0t0+Tf(t)e−inωtdt⋅einωtf(t) = \frac{1}{T}\sum_{n = - \infty}^{+ \infty}\int_{t_0}^{t_0 + T}f(t)e^{-in{\omega}t}dt {\cdot} e^{in{\omega}t}f(t)=T1​∑n=−∞+∞​∫t0​t0​+T​f(t)e−inωtdt⋅einωt

然后提取整体变量:关于n的函数,F(nω)=∫t0t0+Tf(t)e−inωtdtF(n\omega) = \int_{t_0}^{t_0 + T}f(t)e^{-in{\omega}t}dtF(nω)=∫t0​t0​+T​f(t)e−inωtdt,并把nωn\omeganω换成ωx\omega_xωx​,其中ωx\omega_xωx​设为2πN⋅n\frac{2\pi}{N} \cdot nN2π​⋅n,那么:
f(t)=1T∑n=−∞+∞F(ωx)⋅eiωxtf(t) = \frac{1}{T}\sum_{n = - \infty}^{+ \infty} F(\omega_x) {\cdot} e^{{i\omega_x}t}f(t)=T1​∑n=−∞+∞​F(ωx​)⋅eiωx​t

令ωx=2πN⋅n\omega_x = \frac{2\pi}{N} \cdot nωx​=N2π​⋅n,其中N→+∞,N∈ZN \to +\infty, N \in ZN→+∞,N∈Z带入上式可得:
f(t)=N2π⋅T⋅∑n=−∞+∞[F(ωx)⋅eiωxt2πN]f(t) = \frac{N}{2\pi \cdot T} \cdot \sum^{+\infty}_{n = -\infty}[F(\omega_x) \cdot e^{i{\omega_x}t} \frac{2\pi}{N}]f(t)=2π⋅TN​⋅∑n=−∞+∞​[F(ωx​)⋅eiωx​tN2π​]

=N2π⋅T∫−∞+∞F(ωx)⋅eiωxtdωx= \frac{N}{2{\pi}{\cdot}T}\int_{-\infty}^{+\infty}F(\omega_x) \cdot e^{i{\omega_x}t} d\omega_x=2π⋅TN​∫−∞+∞​F(ωx​)⋅eiωx​tdωx​

此时引入现实的问题,在现实世界中处理的信号函数,其周期无限大,也就是T→NT \to NT→N,其中N→+∞N \to +\inftyN→+∞,可以得到傅里叶变换公式:
f(t)=12π∫−∞+∞F(ωx)⋅eiωxtdωxf(t) = \frac{1}{2{\pi}}\int_{-\infty}^{+\infty}F(\omega_x) \cdot e^{i{\omega_x}t} d\omega_xf(t)=2π1​∫−∞+∞​F(ωx​)⋅eiωx​tdωx​ 把这个公式成为 公式1
公式中的F(ωx)F(\omega_x)F(ωx​)就是整体变量F(ωx)=∫t0t0+Tf(t)e−iωxtdtF(\omega_x) = \int_{t_0}^{t_0 + T}f(t)e^{-i\omega_xt}dtF(ωx​)=∫t0​t0​+T​f(t)e−iωx​tdt。这里的nωn\omeganω换成了ωx\omega_xωx​

结论:

  1. 傅里叶变换是F(ωx)F(\omega_x)F(ωx​)公式,而f(t)=12π∫−∞+∞F(ωx)⋅eiωxtdωxf(t) = \frac{1}{2{\pi}}\int_{-\infty}^{+\infty}F(\omega_x) \cdot e^{i{\omega_x}t} d\omega_xf(t)=2π1​∫−∞+∞​F(ωx​)⋅eiωx​tdωx​是傅里叶逆变换。其实这种说法会让人难以理解,其实周期无限大的傅里叶级数推导后的公式就是公式1

  2. 周期无限大的信号对其进行傅里叶级数展开时,其过程这样的 复杂函数 —> 频域下的函数组合 —> 时域下的简单函数组合

  3. 在周期无限大的信号函数进行傅里叶级数 推导的过程中,会产生中间变量F(ωx)F(\omega_x)F(ωx​)(令人激动的是,这个函数是原信号的频域表达式),然后再对其积分,就是等价于原来的函数了;

  4. 其中 复杂函数 等于 时域下的简单函数组合,而 频域下的函数组合 是转换过程中的一个中间结果,然而这个中间结果揭示了一个信号函数的频率表现形式。

离散傅里叶变换与快速傅里叶变换

傅里叶变换是处理一个连续的函数,而在计算机的处理都是处理离散化的数据。那么根据傅里叶变换公式,然后推导出离散傅里叶变化。

f(t)=1T∑n=−∞+∞F(ωx)⋅eiωxtf(t) = \frac{1}{T}\sum_{n = - \infty}^{+ \infty} F(\omega_x) {\cdot} e^{i{\omega_x}t}f(t)=T1​∑n=−∞+∞​F(ωx​)⋅eiωx​t 是由 f(t)=N2π⋅T⋅∑n=−∞+∞[F(ωx)⋅eiωxt2πN]=N2π⋅T∫−∞+∞F(ωx)⋅eiωxtdωxf(t) = \frac{N}{2\pi \cdot T} \cdot \sum^{+\infty}_{n = -\infty}[F(\omega_x) \cdot e^{i{\omega_x}t} \frac{2\pi}{N}] = \frac{N}{2{\pi}{\cdot}T}\int_{-\infty}^{+\infty}F(\omega_x) \cdot e^{i{\omega_x}t} d\omega_xf(t)=2π⋅TN​⋅∑n=−∞+∞​[F(ωx​)⋅eiωx​tN2π​]=2π⋅TN​∫−∞+∞​F(ωx​)⋅eiωx​tdωx​ 推导而来的。

因为在傅里叶级数推导傅里叶变换中,已经设ωx=2πN⋅n\omega_x = \frac{2\pi}{N} \cdot nωx​=N2π​⋅n,又因为现实问题中,信号的周期无限大,即N→+∞N \to + \inftyN→+∞,所以ωx→0\omega_x \to 0ωx​→0 。

在处理离散傅里叶的变化中,现实中的信号都是从0开始,替换公式 f(t)=1T∑n=−∞+∞F(ωx)⋅einωtf(t) = \frac{1}{T}\sum_{n = - \infty}^{+ \infty} F(\omega_x) {\cdot} e^{in{\omega}t}f(t)=T1​∑n=−∞+∞​F(ωx​)⋅einωt 中的N,

得到离散傅里叶逆变换公式:

f(t)=N2π⋅T∑n=0NF(n)⋅ei2π⋅nNt⋅2πN=1T∑n=0N[F(n)⋅ei2π⋅nNt]f(t) = \frac{N}{2\pi \cdot T}\sum_{n = 0}^{N} F(n) {\cdot} e^{i \frac{2 \pi \cdot n}{N} t} \cdot \frac{2\pi}{N} = \frac{1}{T} \sum_{n = 0}^{N}[F(n) \cdot e^{i \frac{2 \pi \cdot n}{N} t}]f(t)=2π⋅TN​∑n=0N​F(n)⋅eiN2π⋅n​t⋅N2π​=T1​∑n=0N​[F(n)⋅eiN2π⋅n​t]

离散傅里叶变换公式:

这里的ωx\omega_xωx​等于n即F(ωx)F(\omega_x)F(ωx​)等于F(n)F(n)F(n),是因为在傅里叶级数推导的傅里叶变换的章节中,F(nω)=∫t0t0+Tf(t)e−inωtdtF(n\omega) = \int_{t_0}^{t_0 + T}f(t)e^{-in{\omega}t}dtF(nω)=∫t0​t0​+T​f(t)e−inωtdt,令nωn\omeganω为一个新的变量n,后面变换nωn\omeganω;根据周期与角频率公式,又因为ω=2πT\omega = \frac{2\pi}{T}ω=T2π​,这里的T变为N,所以ω=2πN\omega = \frac{2\pi}{N}ω=N2π​,即公式为:F(n)=∑t=0Nf(t)e−i2π⋅nNtF(n) = \sum_{t = 0}^{N}f(t)e^{-i\frac{2 \pi \cdot n}{N}t}F(n)=∑t=0N​f(t)e−iN2π⋅n​t,该公式也是傅里叶变换公式。

小结:傅里叶变换转成离散傅里叶变换,N由原来的(−∞,+∞)(-\infty, +\infty)(−∞,+∞)变成(0,+∞)(0, +\infty)(0,+∞),且N每个取值是一个整数。

注意: 原来的傅里叶变换公式变成离散傅里叶变换公式,原来的是F(ωx)F(\omega_x)F(ωx​)变为F(n)F(n)F(n),这里不是从F(ωx)F(\omega_x)F(ωx​)变换过去的,而是从最初F(nω)=∫t0t0+Tf(t)e−inωtdtF(n\omega) = \int_{t_0}^{t_0 + T}f(t)e^{-in{\omega}t}dtF(nω)=∫t0​t0​+T​f(t)e−inωtdt变换的。

代码演示附件

傅立叶级数到傅立叶变换推导与理解相关推荐

  1. 如何理解傅立叶级数、傅立叶变换公式?

    此前在另外一篇文章尝试给对傅立叶级数.傅立叶变换进行过稍微直观点的解释.本文会对公式进行细节的.代数上的解释. 1 对周期函数进行分解的猜想 拉格朗日等数学家发现某些周期函数可以由三角函数的和来表示, ...

  2. 从傅立叶级数到傅立叶变换

    版权声明:本文为博主原创文章,转载请注明原文出处! 写作时间:2019-10-31 如果有公式乱码,参见我的个人博客从傅立叶级数到傅立叶变化 文章目录 傅立叶级数 傅立叶变换 写这篇博文的初衷是在翻阅 ...

  3. 傅立叶变换- 阐释与--理解

    傅里叶变换傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合.在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换.最初傅 ...

  4. 离散傅立叶变换推导(DF、IDFT)

    mazonex离散傅立叶变换视频笔记 需要先了解傅里叶变换推导(FT.IFT) 本文仅作为笔记,推导思想和图片来自视频 周期为2π2\pi2π的函数的复数形式展开(傅里叶级数) 在上一篇文章中part ...

  5. 傅立叶级数和傅立叶变换是什么关系?

    周期信号傅立叶级数意思是信号可以化为很多余弦函数的和,对应每个余弦函数的系数就是画出来频谱的大小,而非周期傅立页可以看成周期无限大的周期函数,如果也用傅立叶级数表示的话(这里用许多复数和而不用余弦函数 ...

  6. 如何通俗地理解傅立叶变换?

    声明下,下面都是用傅立叶级数来阐述,文章最后会说明下傅立叶级数和傅立叶变换之间的关系. 让我们从比较容易懂的解释开始吧. 1 直观解释 1666年牛顿发现太阳光经三棱镜的折射后可呈现彩色光,称为光的色 ...

  7. # 傅立叶变换 画曲线_让你永远忘不了的傅立叶变换解析

    使用联想链条和几何直观,辅以从实际需求衍生概念的思考模式,详解什么是傅立叶变换,为什么要做傅立叶变换等,帮助记忆和理解,目的当然是标题所说:让你永远忘不了傅立叶变换这个公式.另,这篇博客还从侧面一定程 ...

  8. 傅立叶变换,时域,频域一

    参考文献: 信号完整性分析 "信息传输调制和噪声"P31, "傅立叶变换的数学再认识"及若干网上博客. 目录 信号分析方法概述     时域     频域    ...

  9. 傅立叶变换系列(四)离散傅立叶变换

    说明: 傅里叶级数.傅里叶变换.离散傅里叶变换.短时傅里叶变换...这些理解和应用都非常难,网上的文章有两个极端:"Esay"  Or  "Boring"!如果 ...

  10. 二维小波变换_让你永远忘不了的傅立叶变换解析

    使用联想链条和几何直观,辅以从实际需求衍生概念的思考模式,详解什么是傅立叶变换,为什么要做傅立叶变换等,帮助记忆和理解,目的当然是标题所说:让你永远忘不了傅立叶变换这个公式.另,这篇博客还从侧面一定程 ...

最新文章

  1. CAPSNET:具有自我注意路由的胶囊网络
  2. .NET : 再谈谈XML中的命名空间问题
  3. 干货回顾丨TensorFlow四种Cross Entropy算法的实现和应用
  4. (010) java后台开发之String字符串操作
  5. linux 好用的命令积累
  6. 异步加载js的三种方法
  7. PHP-代码审计-代码执行
  8. SqliteHelper整理(转载)
  9. LeetCode MySQL 569. 员工薪水中位数(over窗口函数)
  10. 信息学奥赛一本通 1099:第n小的质数 | OpenJudge NOI 1.5 44
  11. python使用request发送post请求_python之使用request模块发送post和get请求
  12. 基于AE的SimpleGIS框架的搭建
  13. 多用户文件系统java实现_小师妹学JavaIO之:文件系统和WatchService
  14. canvas应用之各种游戏转盘
  15. 心在哪裡行動力就在那裡 戴晨志
  16. 兽药促销发展分析及新策略谈
  17. 一个简化的正弦余弦算法:正弦算法
  18. LeetCode 781 森林中的兔子 题解
  19. 7-22 龟兔赛跑 (20分) Python
  20. 一个月考过软件测评师,我是怎么做到的

热门文章

  1. endnote导入bib
  2. 怎么在计算机中添加电脑桌面,如何在电脑正在使用的主题中添加桌面背景图片...
  3. 【随笔】蒟蒻的告别?
  4. 练习时长一年半,算法蒟蒻的成长记录
  5. Python 使jupyter notebook 从指定浏览器启动 以及编程中途更换浏览器
  6. Python使用Opencc库完成字符繁简体转换
  7. 功耗:Leakage Power
  8. 常见计算机蓝屏代码,史上最全蓝屏代码分析,快速解决电脑常见故障,值得收藏!...
  9. 单细胞测序——基本知识
  10. 【Python爬虫】:爬取58同城二手房的所有房产标题