傅里叶变换(一)——认识傅里叶变换

2023-05-16

注:本文为博主参考书籍和他人文章并加上自己的理解所编,作为学习笔记使用并将其分享出去供大家学习。若涉及到引用您的文章内容请评论区告知!如有错误欢迎指正! 

参考文章:https://zhuanlan.zhihu.com/p/19763358

p.s.本文无论是cos还是sin,都统一用“正弦波”(Sine Wave)一词来代表简谐波。

一、什么是傅里叶变换

 

时域及频域

    在讲解傅里叶变换之前,我们需要先来了解一下时域和频域的概念。

    从我们出生,我们看到的世界都以时间贯穿,股票的走势、人的身高、汽车的轨迹都会随着时间发生改变。这种以时间作为参照来观察动态世界的方法我们称其为时域分析。而我们也想当然的认为,世间万物都在随着时间不停的改变,并且永远不会静止下来。但如果我告诉你,用另一种方法来观察世界的话,你会发现世界是永恒不变的,你会不会觉得我疯了?我没有疯,这个静止的世界就叫做频域。

    我们举一个例子:假如一段音乐的曲调类似于某种正弦波的形式,那么从时域来看它的曲调时高时低在不停地变化着,而当我们从频域的角度看则可以认为它只是静止在那里的一个音符(本人不懂音乐,这样写纯粹为了帮助理解)。

    这里 借用别人的一句话:

你眼中看似落叶纷飞变化无常的世界,实际只是躺在上帝怀中一份早已谱好的乐章。

    所以实际上时域是以时间为横坐标,时域分析就是观察一件事物随时间的变化规律。而频域则是以频率为横坐标,频域分析(频谱分析)就是在观察一件事物在不同频率上的分布情况。

 

为什么要进行频域分析   

     信号不只和时间有关,还和频率有关,在不同频率下信号的响应是不一样的,所以就要知道信号随着频率是怎么变化的。

 

    还有信号的计算,在时间域内往往要解微分方程,而用傅立叶和拉普拉斯变换到复频域后就变成了代数方程,求解起来很方便。
    从频谱图上可以看到幅值和相位随着频率变化是如何响应的

 

    也可以求出系统的截止频率。

    无需求解微分方程,图解(频率特性图)法,间接揭示系统性能并指明改进性能的方向和易于实验分析.可推广应用于某些非线性系统(如含有延迟环节的系统)以及可方便设计出能有效抑制噪声的系统。

傅里叶分析

    那我们不禁会产生一个疑问,如果我们需要分析的这个信号是没有规律即不是正弦信号的话,我们该如何从频域的角度去做分析呢?

    这时我们的傅里叶同学提出来:任何连续周期信号都可以由一组适当的正弦曲线组合而成。虽然正弦曲线无法组合成一个带有棱角的信号。但是,我们可以用正弦曲线来非常逼近地表示它,逼近到两种表示方法不存在能量差别。

    这里引用别人的一张图:

    随着正弦波数量逐渐的增长,他们最终会叠加成一个标准的矩形。

    不仅仅是矩形,你能想到的任何波形都是可以如此方法用正弦波叠加起来的,前提是要正弦波足够的多。

    为什么我们要用正弦曲线来代替原来的曲线呢?如我们也还可以用方波或三角波来代替呀,分解信号的方法是无穷多的,但分解信号的目的是为了更加简单地处理原来的信号。
    用正余弦来表示原信号会更加简单,因为正余弦拥有原信号所不具有的性质:正弦曲线保真度。一个正余弦曲线信号输入后,输出的仍是正余弦曲线,只有幅度和相位可能发生变化,但是频率和波的形状仍是一样的。且只有正余弦曲线才拥有这样的性质,正因如此我们才不用方波或三角波来表示。

    傅里叶变换使一种线性的积分变换,这种变换是从时间转换为频率的变换或其相互转换。那么为什么要使用傅里叶变化呢?它可以很容易的将信号分解为频域里各种不同频率的信号,又由于频域分析具有很多时域所不具有的特点,故可以比较方便的对原信号进行分析。

分解的思路

1.常数项

    对于某些常数函数或者含有其他附加量的原函数,还需要附加常数项。

2.周期不变

    假设原函数的周期为T,我们通过怎样的合理分解能使的分解出的各函数可以仍然合并出一个周期为T的函数呢?

 

    我们通过思考,比如说T/2的周期也为T。很显然对于一般的,如果f(x)的周期为T,那么

这些函数的周期都为T。我们将这些函数进行加减得到的结果函数周期仍然为T。

3.振幅调整

    通过上面的分析,我们得到了一堆周期为T的函数。接下来我们就需要用这一对的函数的某些来逼近原函数,比如先用一个周期刚好为T的函数(基波/一次谐波)来与原函数作比较,假设该函数比原函数看起来要低一些,那我我们可以试图给这个函数进行放大,即前面加上一个大于1的系数。此时如果某些地方超出了原函数,我们就需要减去一个较小周期的函数。这样经过不断地加加减减就会越来越接近原函数了。

4.总结

    综上,我们可以构造一个三角函数之和:

其中C称为f(x)的直流分量,an和bn分别为余弦函数和正弦函数的赋值增益。(这个式子就是后边要讲的傅里叶级数的一般形式的转换函数)

  

二、傅里叶变换的类型  

    按原始信号的不同可以将傅里叶变换分为四类:

1、非周期性连续信号        傅立叶变换(FT) 
2、周期性连续信号           傅立叶级数(FS) 
3、非周期性离散信号        离散时域傅立叶变换(DTFT) 

4、周期性离散信号           离散傅立叶变换(DFT) 

    如上,容易发现:函数在时(频)域的离散对应于其像函数在频(时)域的周期性。反之连续则意味着在对应域的信号的非周期性。也就是说,时间上的离散性对应着频率上的周期性。同时,注意,离散时间傅里叶变换,时间离散,频率不离散,它在频域依然是连续的。

 

阅读建议:下面的顺序是为了和上面的列举有所对应,阅读的话建议先阅读傅里叶级数然后再阅读连续傅里叶变换。

1、连续傅里叶变换(FT)

傅里叶变换的频谱

    通过和傅里叶级数的图比较,大家应该可以理解如何从离散谱变成了连续谱的了吧?原来离散谱的叠加,变成了连续谱的累积。所以在计算上也从求和符号变成了积分符号。

欧拉公式

    在进行下面的讲解之前,我们需要复习一下之前高中学过的数学知识:欧拉公式生气

    虚数i这个概念大家在高中就接触过,但那时我们只知道它是-1的平方根,可是它真正的意义是什么呢?

    这里有一条数轴,在数轴上有一个红色的线段,它的长度是1。当它乘以3的时候,它的长度发生了变化,变成了蓝色的线段,而当它乘以-1的时候,就变成了绿色的线段,或者说线段在数轴上围绕原点旋转了180度。

    我们知道乘-1其实就是乘了两次 i使线段旋转了180度,那么乘一次 i 呢——答案很简单——旋转了90度。

    同时,我们获得了一个垂直的虚数轴。实数轴与虚数轴共同构成了一个复数的平面,也称复平面。这样我们就了解到,乘虚数i的一个功能——旋转。

    现在,就有请宇宙第一耍帅公式欧拉公式隆重登场——

    这个公式在数学领域的意义要远大于傅里叶分析,但是称它为宇宙第一耍帅公式是因为它的特殊形式——当x等于Pi的时候。

    这个公式关键的作用,是将正弦波统一成了简单的指数形式。我们来看看图像上的涵义:

    欧拉公式所描绘的,是一个随着时间变化,在复平面上做圆周运动的点,随着时间的改变,在时间轴上就成了一条螺旋线。如果只看它的实数部分,也就是螺旋线在左侧的投影,就是一个最基础的余弦函数。而右侧的投影则是一个正弦函数。

指数形式的傅里叶变换

    有了欧拉公式的帮助,我们便知道:正弦波的叠加,也可以理解为螺旋线的叠加在实数空间的投影。

    那么我们就可以很容易的从实数域扩展到复数域。

    这个像大海螺一样的图,为了方便观看,仅仅展示了其中正频率的部分,负频率的部分没有显示出来。

    如果你认真去看,海螺图上的每一条螺旋线都是可以清楚的看到的,每一条螺旋线都有着不同的振幅(旋转半径),频率(旋转周期)以及相位。而将所有螺旋线连成平面,就是这幅海螺图了。

 

    连续形式的傅里叶变换其实是傅里叶级数 (Fourier series)的推广,因为积分其实是一种极限形式的求和算子而已。一般情况下,若“傅里叶变换”一词不加任何限定语,则指的是“连续傅里叶变换”。连续傅里叶变换将平方可积的函数f(t)表示成复指数函数的积分或级数形式

这是将频域的函数F(ω)表示为时域的函数f(t)的积分形式。

    ①平方可积函数:平方可积函数是绝对值平方的积分为有限值的实值或副值可测函数,又称二次积分函数。一个等价的定义是,函数本身的平方(而非它的绝对值)是勒贝格可积的。想要使其为真,实部的正和负的部分的积分都必须是有限的,虚部也是如此。若,则我们说f在实直线(-∞,+∞)上是平方可积的。平方可积一词也可以用于有限区间。

    ②级数是指将数列的项依次用加号连接起来的函数。级数理论是分析学的一个分支;它与另一个分支微积分一起作为基础知识和工具出现在其余各分支中。二者共同以极限为基本工具,分别从离散与连续连个方面,结合起来研究分析学的对象,即变量之间的依赖关系——函数。S=∑u(n)称为级数的部分和,u(n)称为级数的通项。

    连续傅里叶变换的逆变换为:

即将时域的函数f(t)表示为频域的函数F(ω)的积分。

    一般可称函数f(t)为原函数,而称函数F(ω)为傅里叶变换的像函数,原函数和像函数构成一个傅里叶变换对。

    除此之外,还有其它型式的变换对,以下两种型式亦常被使用。在通信或是信号处理方面,常以来代换,而形成新的变换对:

    一种对连续傅里叶变换的推广称为分数傅里叶变换(Fractional Fourier Transform)。分数傅里叶变换(fractional Fourier transform,FRFT)指的就是傅里叶变换(Fourier transform,FT)的广义化。

分数傅里叶变换的物理意义即做傅里叶变换 a 次,其中 a 不一定要为整数;而做了分数傅里叶变换之后,信号或输入函数便会出现在介于时域(time domain)与频域(frequency domain)之间的分数域(fractional domain)。

    当f(t)为偶函数(或奇函数)时,其正弦(或余弦)分量将消亡,而可以称这时的变换为余弦变换(cosine transform)或正弦变换(sine transform)。

    这个很好理解,不过这里还是给出它的证明过程:我们可以先设f(t)=e^jωt,那么f(-t)=e^-jωt。根据欧拉公式我们可以得到f(t)= e^jωt=cos(ωt)+jsin(ωt)。根据(f(t)+ f(-t))/2= cos(ωt),若f(t)为偶函数则得到f(t)= cos(ωt);根据(f(t)-f(-t))/2=jsin(ωt)若f(t)为奇函数则得到f(t)= jsin(ωt)。

2、傅里叶级数(FS)

傅里叶级数的频谱

    还是上图的正弦波累加成矩形波,我们换一个角度来看看:

 

    在这几幅图中,最前面黑色的线就是所有正弦波叠加而成的总和,也就是越来越接近矩形波的那个图形。而后面依不同颜色排列而成的正弦波就是组合为矩形波的各个分量。这些正弦波按照频率从低到高从前向后排列开来,而每一个波的振幅都是不同的。一定有细心的读者发现了,每两个正弦波之间都还有一条直线,那并不是分割线,而是振幅为0的正弦波!也就是说,为了组成特殊的曲线,有些正弦波成分是不需要的。

    这里,不同频率的正弦波我们称为频率分量。   

    如果我们把第一个频率最低的频率分量看作“1”,我们就有了构建频域的最基本单元。对于我们最常见的有理数轴,数字“1”就是有理数轴的基本单元。时域的基本单元就是“1秒”,如果我们将一个角频率为\omega_{0}的正弦波cos(\omega_{0}t)看作基础,那么频域的基本单元就是\omega_{0}

    有了“1”,还要有“0”才能构成世界,那么频域的“0”是什么呢?cos(0t)就是一个周期无限长的正弦波,也就是一条直线!所以在频域,0频率也被称为直流分量,在傅里叶级数的叠加中,它仅仅影响全部波形相对于数轴整体向上或是向下而不改变波的形状。

    正弦波就是一个圆周运动在一条直线上的投影。

    所以频域的基本单元也可以理解为一个始终在旋转的圆。圆的半径取决于振幅的大小,圆的转速取决于频率频率大小。

    介绍完了频域的基本组成单元,我们就可以看一看一个矩形波,在频域里的模样了:

可以看出有些项的振幅是0,也就对应了图中的彩色直线。振幅为0的正弦波。

傅里叶级数的相位谱

    通过时域到频域的变换,我们得到了一个从侧面看的频谱,但是这个频谱并没有包含时域中全部的信息。因为频谱只代表每一个对应的正弦波的振幅是多少,而没有提到相位。基础的正弦波A.sin(wt+θ)中,振幅,频率,相位缺一不可,不同相位决定了波的位置,所以对于频域分析,仅仅有频谱(振幅谱)是不够的,我们还需要一个相位谱。那么这个相位谱在哪呢?我们看下图,这次为了避免图片太混论,我们用7个波叠加的图。

    鉴于正弦波是周期的,我们需要设定一个用来标记正弦波位置的东西。在图中就是那些小红点。小红点是距离频率轴最近的波峰,而这个波峰所处的位置离频率轴有多远呢?为了看的更清楚,我们将红色的点投影到下平面,投影点我们用粉色点来表示。当然,这些粉色的点只标注了波峰距离频率轴的距离,并不是相位。

    这里需要纠正一个概念:时间差并不是相位差。如果将全部周期看作2Pi或者360度的话,相位差则是时间差在一个周期中所占的比例。我们将时间差除周期再乘2Pi,就得到了相位差。

    在完整的立体图中,我们将投影得到的时间差依次除以所在频率的周期,就得到了最下面的相位谱。所以,频谱是从侧面看,相位谱是从下面看。

 

    对于周期函数,其傅里叶级数是存在的:(注:以下公式均假设原周期函数的周期为2π,关于傅里叶级数的更详细的解释会出现在后期的深入傅里叶级数一篇文章中)

其中Fn为复幅度。对于实值函数,函数的傅里叶级数可以写成:

其中an和bn是实频率分量的幅度。

3、离散时域傅里叶变换(序列的傅里叶变换 DTFT)

    离散傅里叶变换是离散时域傅里叶变换(DTFT)的特例(有时作为后者的近似)。DTFT在时域上离散,在频域上则是周期的。DTFT可以被看作是傅里叶级数的逆变换。

4、离散傅里叶变换(DFT)

    离散傅里叶变换(DFT),是连续傅里叶变换在时域和频域上都离散的形式,且时域和频域都是周期性的。在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号再作变换。在实际应用中通常采用快速傅里叶变换以高效计算DFT。

    为了在科学计算和数字信号处理等领域使用计算机进行傅里叶变换,必须将函数xn定义在离散点而非连续域内,且须满足有限性或周期性条件。这种情况下,使用离散傅里叶变换(DFT),将函数xn表示为下面的求和形式:

    其中Xk是傅里叶幅度。直接使用这个公式计算的计算复杂度为O(n*n),而快速傅里叶变换(FFT)可以将复杂度改进为O(n*lgn)。(后面会具体阐述FFT是如何将复杂度降为O(n*lgn)的。)计算复杂度的降低以及数字电路计算能力的发展使得DFT成为在信号处理领域十分实用且重要的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

傅里叶变换(一)——认识傅里叶变换 的相关文章

随机推荐

  • MapReduce编程-join算法实现

    假设有订单表t order和t product两张数据库表 xff0c 现在需要进行关联查询 这样的sql语句很容易写 select a span class hljs preprocessor id span a span class h
  • 《将博客搬至CSDN》

    将博客搬至CSDN
  • 3D打印Gcode文件命令详解

    目录 3D打印Gcode文件命令详解Gcode文件作用 常用命令 命令 注释G28命令 复位G90和G91命令 设置定位模式M82和M83命令 设定挤丝模式G1命令 运动命令G92命令 设置当前位置M104和M109命令 加热喷嘴M140和
  • 机器学习系统安全

    Abstract 机器学习 已经成为当前计算机领域研究和应用最广泛的技术之一 xff0c 在图像处理 自然语言处理 网络安全等领域被广泛应用 然而 xff0c 一些机器学习算法和训练数据本身还面临着诸多安全威胁 xff0c 进而影响到基于机
  • 汇编语言测试

    汇编测试
  • 汇编语言-DosBox环境搭建

    汇编语言 王爽 问题 xff1a debug 不是内部或外部命令 原因 xff1a 现在windows下不集成了 xff0c 我们可以利用DosBox工具帮助我们学习汇编 汇编语言环境搭建 参考帖子 xff1a https www cnbl
  • 矩阵快速幂详解

    矩阵快速幂 在讲矩阵快速幂之前 xff0c 先引入整数快速幂的概念 整数快速幂 为了引出矩阵快速幂 xff0c 以及说明快速幂算法的好处 xff0c 我们可以先求整数的幂 如果现在要算X 8 则X X X X X X X X X 按照寻常思
  • ubuntu 20.04安装ROS noetic添加秘钥失败 gpg: no valid OpenPGP data found.

    在安装ROS noetic时 xff0c 可能会遇到以下错误 当运行以下命令时 curl s https raw githubusercontent com ros rosdistro master ros asc sudo apt key
  • 【CentOS7 Samba服务器配置】

    第四章 Samba服务器配置 文章目录 第四章 Samba服务器配置前言一 Samba是什么 xff1f 二 使用步骤1 安装软件包2 配置Samba服务器3 创建文件夹4 添加 Samba 用户5 开启服务6 测试 总结 前言 本章学习S
  • ArgumentError: Could not parse rfc1738 URL from string

    使用flask sqlacodegen遇到如上问题时 xff0c 引号要用双引号 xff0c 并且要mysql xff08 如果你使用的是其他的数据库这里应该填你使用的数据库 xff09 注意 注意 注意要加上数据库驱动 xff0c 向下面
  • 多任务学习为什么有效?

    前言 多任务学习 xff08 Multi task Learning MTL xff09 在机器学习领域应用广泛 xff0c 比如自然语言处理和计算机视觉等领域 xff0c 这也侧面反映了 MTL 的有效性 本文将从 MTL 的概念 使用动
  • 简单绕过chrome(谷歌游览器) 查看已保存的密码

    利用场景 xff1a 同事或朋友外出有事 xff0c 电脑未锁屏离开座位 可以利用这一间隙 xff0c 查看Ta在Chrome浏览器上保存的账号密码 查看逻辑 xff1a 当我们要查看Chrome浏览器上保存的密码时 xff0c 点击显示
  • 根据数据库表生成 model 类

    根据数据库表生成 model 类 创建一个Django项目 code django admin startproject xxxx code 修改setting文件 xff0c 在setting里面设置你要连接的数据库类型和连接名称 xff
  • STM32基础(4)使用SysTick滴答定时器实验精准延时

    原理 SysTick 定时器也叫 SysTick 滴答定时器 xff0c 它是 Cortex M3 内核的一个外设 xff0c 被嵌入在 NVIC 中 它是一个 24 位向下递减的定时器 xff0c 每计数一次所需时间为 1 SYSTICK
  • 在px4,gazebo环境中添加激光雷达,双目相机和下视摄像头

    在搭建好px4的仿真环境后 xff0c gazebo中仅为一架裸机 xff0c 不含其他传感器 本文将在该环境下把激光雷达 xff0c 双目相机 xff0c 下视摄像头集成到飞机上 xff0c 方便后续的算法测试 修改仿真启动文件 找到 F
  • Oauth2.0的四种模式

    1 授权码模式 xff08 1 xff09 资源拥有者打开客户端 xff0c 客户端要求资源拥有者给予授权 xff0c 它将浏览器被重定向到授权服务器 xff0c 重定向时会 附加客户端的身份信息 如 xff1a uaa oauth aut
  • nvidia-smi报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver

    输入nvidia smi显示 NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver 但是torch cuda is available 还能
  • RunnerGo开源版的安装教程(Windows)

    文章目录 一 启动Hyper V服务二 安装docker三 准备 docker 和 docker compose 环境四 cd runnergo 进入到目录五 配置文件 config env 修改 默认基本可以不用改六 修改应用暴露的端口号
  • Docker Desktop requires a newer WSL kernel version.

    问题描述 xff1a Docker Desktop requires a newer WSL kernel version 问题截图 xff1a 问题原因 xff1a WSL不是最新版 解决方案 xff1a 适用于 Linux 的 Wind
  • 傅里叶变换(一)——认识傅里叶变换

    注 xff1a 本文为博主参考书籍和他人文章并加上自己的理解所编 xff0c 作为学习笔记使用并将其分享出去供大家学习 若涉及到引用您的文章内容请评论区告知 xff01 如有错误欢迎指正 xff01 参考文章 xff1a https zhu