一篇文章入门傅里叶变换

文章目录

  • 傅里叶变换
    • 欧拉公式
    • 傅里叶变换
      • 绕圈记录法
      • 质心记录法
      • 傅里叶变换公式
        • 第一步:旋转的表示
        • 第二步:缠绕的表示
        • 第三步:质心的表示
        • 最终步:整理积分限和系数
  • 参考文献

傅里叶变换

在学习傅里叶变换之前,我们先来了解一下欧拉公式。顺便说一下,『欧拉公式』在世界上最伟大的十个公式中排第二名,而『傅里叶变换』在世界上最伟大的十个公式中排第七名。

欧拉公式

在数学中,对于数的集合,在一维数轴上,加法操作可以视为沿着数轴的平移,而乘法操作则可以视为数轴上的伸缩变化。具体来说:

  • 加法:在一维数轴上,给一个数加上另一个数,相当于将该数在数轴上向右(或向左,如果是负数)平移相应的距离
  • 乘法:在一维数轴上,将一个数乘以另一个数,则相当于将该数在数轴上按比例伸缩

在二维平面上,如果我们想将一个点(比如 ( 1 , 0 ) (1,0) (1,0))移动到另一个点,可以先在横轴方向上平移,再在纵轴方向上平移即可实现。
除了平移外,也可以利用伸缩和旋转来达到同样的效果。伸缩操作即为点的倍乘,但旋转该如何表达呢?

  1. 仅使用旋转,就可以将 ( 1 , 0 ) (1,0) (1,0)变换到 ( − 1 , 0 ) (-1,0) (1,0)
  2. 在复平面中,存在一个定义: − 1 = i × i -1=i\times i 1=i×i → \rightarrow 当单位 i i i表示旋转 90 ° 90° 90°时,进行两次相同的操作即可从 ( 1 , 0 ) (1,0) (1,0)变换到 ( − 1 , 0 ) (-1,0) (1,0)
  3. 如果一次 i i i操作是逆时针旋转 90 ° 90° 90°,正好会落在二维平面y轴上的 ( 0 , 1 ) (0,1) (0,1),该点距离原点的长度为单位长度
  4. 如果 y y y轴自带虚数单位,如 i , 2 i , 3 i ⋯ i,2i,3i\cdots i,2i,3i,即可通过伸缩和旋转表示二维平面上的所有点

请大家思考一个问题: i i i为什么可以表示旋转?
我们来看一下旋转的定义:旋转是沿着一个圆弧运动的过程
可以通过泰勒展开式得到一个完美的桥梁,用来说明 i i i可以表示旋转的原因
e x = 1 + x + 1 2 ! x 2 + 1 3 ! x 3 + ⋯ s i n ( x ) = x − 1 3 ! x 3 + 1 5 ! x 5 + ⋯ c o s ( x ) = 1 − 1 2 ! x 2 + 1 4 ! x 4 + ⋯ \begin{gathered} e^x=1+x+\frac1{2!}x^2+\frac1{3!}x^3+\cdots \\ sin(x)=x-\frac1{3!}x^3+\frac1{5!}x^5+\cdots \\ cos(x)=1-\frac1{2!}x^2+\frac1{4!}x^4+\cdots \end{gathered} ex=1+x+2!1x2+3!1x3+sin(x)=x3!1x3+5!1x5+cos(x)=12!1x2+4!1x4+ ⇒ \Rightarrow 代入 x = i θ x=i\theta x=iθ得: e i θ = 1 + i θ + 1 2 ! ( i θ ) 2 + 1 3 ! ( i θ ) 3 + 1 4 ! ( i θ ) 4 + 1 5 ! ( i θ ) 5 + ⋯ = ( 1 − θ 2 2 ! + θ 4 4 ! + ⋯   ) + i ( θ − θ 3 3 ! + θ 5 5 ! + ⋯   ) = c o s ( θ ) + i s i n ( θ ) \begin{aligned} e^{i\theta}& =1+i\theta+\frac1{2!}(i\theta)^2+\frac1{3!}(i\theta)^3+\frac1{4!}(i\theta)^4+\frac1{5!}(i\theta)^5+\cdots \\ &=(1-\frac{\theta^2}{2!}+\frac{\theta^4}{4!}+\cdots)+i(\theta-\frac{\theta^3}{3!}+\frac{\theta^5}{5!}+\cdots) \\ &=cos(\theta)+isin(\theta) \end{aligned} eiθ=1+iθ+2!1(iθ)2+3!1(iθ)3+4!1(iθ)4+5!1(iθ)5+=(12!θ2+4!θ4+)+i(θ3!θ3+5!θ5+)=cos(θ)+isin(θ)
在这里插入图片描述
e i θ e^{i\theta} eiθ表示一个圆心在原点,半径为1的单位圆 ⇒ \Rightarrow e i θ e^{i\theta} eiθ等价于一种旋转, θ \theta θ为旋转角的度数

傅里叶变换

傅里叶变换是一个分解声音的过程,其公式为: F ( f ) = ∫ − ∞ ∞ g ( t ) e − 2 π i f t d t F(f)=\int_{-\infty}^{\infty}g(t)e^{-2\pi ift}dt F(f)=g(t)e2πiftdt
乍一看这个公式,肯定是看不懂的,我们需要对其进行分解,然后逐步进行理解
既然傅里叶变换是一个分解声音的过程,我们来看一下什么是声音。
声音的气压是一个随时间以正弦函数形态不断震荡的图像
假设,一个标准音A的频率是440Hz,则其每秒钟振动440次;另外一个低音D的频率是240Hz,则其每秒钟振动240次。如果两个音同时发生,产生的气压随时间变化的曲线就是把所有时间点的振幅加起来
而傅里叶变换,就是从一段随时间变化的气压曲线中,找到组成该气压曲线的原始气压曲线
假设我们有一个每秒钟3拍子的声音信号,它的图像如下(Intensity为强度),我们只关注前面的4.5秒
在这里插入图片描述

绕圈记录法

绕圈记录法:同一事物的不同角度 → \rightarrow 下面的动图是最关键的一步,是【看到】傅立叶变换的核心部分
请添加图片描述

  1. 把黄色曲线缠绕到一个圆上,大小是原本信号的振幅
  2. 圆周围的图像由白色的箭头绘制而成,速度可变,上图中的白色箭头移动速度是每秒钟转过半圈
  3. 此时,有两个频率在起作用,一个是信号的频率:3次震荡/秒;另一个是图像缠绕中心圆的频率,为0.5圈/秒。第二个频率可以自由改变,相当于一个变量,下面的动图直观的展现了缠绕速度变化时的可视化表现

请添加图片描述
从最开始的 0.79圈/秒一直变化到1.55圈/秒,再到最后的恰好是3圈/秒,和原来的信号3次震荡/秒相同,此时会出现一个非常稳定的图像
其实,我们只是把一个水平的轴缠绕到一个单位圆上,并用另一个速度的记录标尺(白色箭头)来画图,从另一个角度(维度)来看我们的信号

质心记录法

质心记录法:新维度的特征提取
我们可以发现,在上面动图中,当白色箭头记录的速度在某些特定的值时,画出来的图形非常稳定、形态清晰
我们在上面提到了一个可以自由改变的转圈速度,我们可以将这个可变化的转圈速度作为傅里叶变换中的自变量
至于输出是什么,我们可以观察下面的动图。当图像很混沌(没有规律,混乱的)时候,图像基本关于原点对称;稳定时,其实是“头重脚轻”的。描述“头重脚轻”最好的方法是使用质心,下面的动图直观展现了质心特征对图像特征的描述能力(红色点为质心)
请添加图片描述
考虑到质心是一个二维坐标,为了简洁和直观,取质心的横坐标来表示质心的特征
现在,我们可以得到傅里叶变换的输入和输出:

  • 输入(横坐标):白色箭头的绕圈速度
  • 输出(纵坐标):质心位置的横坐标

按照上面的说明来记录绘出图像,记录每个缠绕频率(速度)对应的质心位置(在横坐标等于零点处有一个很大的值,只是因为原来的图像没有关于横轴对称,有一个偏移量)
请添加图片描述
我们可以看到,新图像的横坐标写的是频率(Frequency),即缠绕圆圈的速度
我们已经得到一个可以用来表示信号频率的工具,把它应用到两个声音的组合图像中看看效果:
请添加图片描述

傅里叶变换公式

我们已经通过这样一个缠绕机器完成了时域到频域的转换
请添加图片描述
如何使用数学语言表达这个转圈记录机制呢?

第一步:旋转的表示

上述所有动图中的旋转之所以能够表示,是基于复平面上的指数函数原理,结合泰勒展开公式来实现的
请添加图片描述

更进一步,指数函数中,以 e e e为底的函数有着特殊的性质,如下面动图所示, e 2 π i t e^{2\pi it} e2πit表示的是一秒钟一圈的旋转方程,可以通过频率 f f f控制旋转的速度,图中为 1 10 \frac{1}{10} 101
请添加图片描述

第二步:缠绕的表示

在傅立叶变换中,我们规定旋转是顺时针的,所以需要先加一个符号。假设原来的函数是 g ( t ) g(t) g(t),将两者的幅值相乘就能得到缠绕图像 g ( t ) e − 2 π i f t g(t)e^{-2\pi ift} g(t)e2πift
请添加图片描述

第三步:质心的表示

那如何表示质心这一概念呢?有一种解决问题的途径是演绎推理,先从简单的特例出发,推广到一般,最后证明正确性即可
考虑如何求一个正方形的质心位置,我们只需在边框上取 n n n个等距离分布的点,并且算这几个点的位置的平均值。那么推广到一般情况,也使用类似的采样点的方式解决,如下面动图所示(紫红色的点即采样点),得到 1 N ∑ k = 1 N g ( t k ) e − 2 π i f t k \frac1N\sum_{k=1}^Ng(t_k)e^{-2\pi iftk} N1k=1Ng(tk)e2πiftk
请添加图片描述

随着采样点的增加,需要使用积分来求解这个问题,如下面动图所示,得到 1 t 2 − t 1 ∫ t 1 t 2 g ( t ) e − 2 π i f t d t \frac1{t_2-t_1}\int_{t_1}^{t_2}g(t)e^{-2\pi ift}dt t2t11t1t2g(t)e2πiftdt
请添加图片描述

最终步:整理积分限和系数

看到常数项系数 1 t 2 − t 1 \frac1{t_2-t_1} t2t11,如果忽略表达倍数关系的系数,对应的含义也会发生变化,不再是质心,而是信号存在的时间越久,位置是质心位置乘以一个倍数,它的值就越大。持续时长为3秒,那么新的位置就是原来质心位置的三倍;持续时长为6秒,就是原来的6倍
一般傅立叶变换公式的上下限是正负无穷,那它的几何直观是什么呢?
请添加图片描述

参考文献

1、傅里叶变换
2、泰勒公式
3、形象展示傅里叶变换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于vue框架的的汇生活家居商城的设计与实现bdjlq(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:商品分类,商品信息,用户 开题报告内容 开题报告 项目名称:基于Vue框架的汇生活家居商城的设计与实现 一、项目背景与意义 随着互联网技术的不断发展和普及,电子商务已成为现代商业的重要组成部分。家居商城作…

《高频电子线路》 —— 高频小信号放大器的分类和质量指标

文章内容来源于【中国大学MOOC 华中科技大学通信(高频)电子线路精品公开课】,此篇文章仅作为笔记分享。 高频小信号放大器的分类和质量指标 分类 质量指标 增益 通频带 可以表示为一般情况下的电压放大倍数,除以谐振时候的电压放…

江协科技STM32学习- P24 DMA数据转运DMA+AD多通道

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

Unity Newtonsoft.Json 大对象序列化失败

Unity Newtonsoft.Json 大对象序列化失败 💣崩溃了没?😀替代方案 💣崩溃了没? Newtonsoft.Json.JsonTextWriter:WriteValueInternal(string,Newtonsoft.Json.JsonToken) InvalidCastException: Specified cast is not…

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 发布日期:2024 年 10 月 28 日 Xcode 16.1 包含适用于 iOS 18.1、iPadOS 18.1、Apple tvOS 18.1、watchOS 11.1、macOS Sequoia 15.1 和 visionOS 2.1 的 SDK。Xco…

噩梦开始 -- 力扣83

噩梦开始了 描述: 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例: 何解? 1、暴力枚举: 遍历一遍,用双指针遍历,一个数序…

分布式搜索引擎elasticsearch操作文档操作介绍

1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,…

浏览器HTTP缓存解读(HTTP Status:200 304)

为什么要有浏览器缓存? 浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存,以便下一次访问时重复使用,节省带宽,提高访问速度,降低服务器压力 http缓存机制主要在http响应头中设定,响应头中…

双十一宠物空气净化器决胜局,希喂、安德迈哪款性价比更高?

秋天到了,新一轮的猫咪换毛季又来了。尽管每天下班很累,但也不得不花上不少时间清理。有时候想偷懒,但身体是第一个反对的。要知道,长期堆积的猫毛除了会破坏家中的干净整洁外,浮毛还会随呼吸进入我们体内,…

SpringBoot--入门、创建一个SpringBoot项目、测试

一、IDEA配置maven (1)下载maven maven下载地址:Maven – Download Apache Maven (2)解压 解压下载好的文件: 创建一个文件夹maven-repository用来充当本地仓库: (3)配…

基于uniapp微信小程序的旅游系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

C++设计模式创建型模式———生成器模式

文章目录 一、引言二、生成器/建造者模式三、总结 一、引言 上一篇文章我们介绍了工厂模式,工厂模式的主要特点是生成对象。当对象较简单时,可以使用简单工厂模式或工厂模式;而当对象相对复杂时,则可以选择使用抽象工厂模式。 工…

Task :prepareKotlinBuildScriptModel UP-TO-DATE,编译卡在这里不动或报错

这里写自定义目录标题 原因方案其他思路 原因 一般来说,当编译到这个task之后,后续是要进行一些资源的下载的,如果你卡在这边不动的话,很有可能就是你的IDE目前没有办法进行下载。 方案 开关一下IDE内部的代理,或者…

Python日志系统详解:Logging模块最佳实践

Python日志系统详解:Logging模块最佳实践 在开发Python应用程序时,日志记录是排查问题、监控系统状态、优化性能的重要手段。Python标准库中提供了强大的logging模块,使开发者可以轻松实现灵活的日志系统。本文将详细介绍Python的logging模块…

「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件

在鸿蒙开发中,Toggle 和 Checkbox 是常用的交互组件,分别用于实现开关切换和多项选择。Toggle 提供多种类型以适应不同场景,而 Checkbox 支持自定义样式及事件回调。本篇将详细介绍这两个组件的基本用法,并通过实战展示它们的组合应用。 关键词 Toggle 组件Checkbox 组件开…

探索现代软件开发中的持续集成与持续交付(CI/CD)实践

探索现代软件开发中的持续集成与持续交付(CI/CD)实践 随着软件开发的飞速进步,现代开发团队已经从传统的开发模式向更加自动化和灵活的开发流程转变。持续集成(CI) 与 持续交付(CD) 成为当下主…

Linux上配置NFS服务

架设一台NFS服务器,并按照以下要求配置: 1、开放/nfs/shared目录,供所有用户查询资料: 2、开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UID和…

docker占用磁盘过多问题

我在windows系统上用docker,安装在C盘环境下,我发现C盘占用了大量的空间,查找后发现是docker的映像文件占用的,于是开始清理,中间还踩个坑,记录一下,下次需要的时候方便找。 踩坑 我本想移动映…

如何批量注册多个Outlook邮箱账号并避免关联

批量注册多个Outlook邮箱账号时,如何避免账号之间的关联性是一个重要的考量因素。会在此文一起探讨如何高效且安全地批量注册多个Outlook邮箱账号,并提供一些实用的建议来确保这些账号不会被关联。 一、Outlook邮箱批量注册机制 在深入注册流程之前&…

LCR 024. 反转链表 最细图片逐行解析过程

LCR 024. 反转链表 给定单链表的头节点 head ,请反转链表,并返回反转后的链表的头节点。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例…