深入浅出的学习傅里叶变换

news2025/1/11 23:45:17

学习傅里叶变换需要面对大量的数学公式,数学功底较差的同学听到傅里叶变换就头疼。事实上,许多数学功底好的数字信号处理专业的同学也不一定理解傅里叶变换的真实含义,不能做到学以致用!

事实上,傅里叶变换的相关运算已经非常成熟,有现成函数可以调用。对于绝大部分只需用好傅里叶变换的同学,重要的不是去记那些枯燥的公式,而是解傅里叶变换的含义及意义。

本文试图不用一个数学公式,采用较为通俗的语言深入浅出的阐述傅里叶变换的含义、意义及方法,希望大家可以更加亲近傅里叶变换,用好傅里叶变换。

一、伟大的傅里叶、伟大的争议!

1807年,39岁的法国数学家傅里叶于法国科学学会上展示了一篇论文(此时不能算发表,该论文要到21年之后发表),论文中有个在当时极具争议的论断:“任何连续周期信号可以由一组适当的正弦曲线组合而成”。

这篇论文,引起了法国另外两位著名数学家拉普拉斯和拉格朗日的极度关注!

​傅里叶、拉普拉斯和拉格朗日

71岁的拉格朗日(貌似现在的院士,不用退休)则反对,反对的理由是“正弦曲线无法组合成一个带有棱角的信号”。屈服于朗格朗日的威望,该论文直到朗格朗日去世后的第15年才得以发表。

之后的科学家证明:傅里叶和拉格朗日都是对的!

有限数量的正弦曲线的确无法组合成一个带有棱角的信号,然而,无限数量的正弦曲线的组合从能量的角度可以非常无限逼近带有棱角的信号。

二、傅里叶变换的定义

后人将傅里叶的论断进行了扩展:满足一定条件的函数可以表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。如何得到这个线性组合呢?这就需要傅里叶变换。

一定条件是什么呢?

这是数学家研究的问题,对于大多数搞电参量测量的工程师而言,不必关注这个问题,因为,电参量测量中遇到的周期信号,都满足这个条件。

这样,在电参量测量分析中,我们可以用更通俗的话来描述傅里叶变换:

任意周期信号可以分解为直流分量和一组不同幅值、频率、相位的正弦波。分解的方法就是傅里叶变换。

并且,这些正弦波的频率符合一个规律:是某个频率的整数倍。这个频率,就称为基波频率,而其它频率称为谐波频率。如果谐波的频率是基波频率的N倍,就称为N次谐波。直流分量的频率为零,是基波频率的零倍,也可称零次谐波。

三、傅里叶变换的意义

1、为什么要进行傅里叶变换呢?

傅里叶变换是描述信号的需要。

只要能反映信号的特征,描述方法越简单越好!

信号特征可以用特征值进行量化。

所谓特征值,是指可以定量描述一个波形的某种特征的数值。全面描述一个波形,可能需要多个特征值。

比如说:正弦波可以用幅值和频率两个特征值全面描述;方波可以用幅值、频率和占空比三个特征值全面描述(单个周期信号不考虑相位)。

上述特征值,我们可以通过示波器观测实时波形获取,称为时域分析法。事实上,许多人都习惯于时域分析法,想要了解一个信号时,一定会说:“让我看看波形!”

可是,除了一些常见的规则信号,许多时候,给你波形看,你也看不明白!

复杂的不讲,看看下面这个波形,能看出道道吗?

​我们能看到的仅仅是一个类似正弦波的波形,其幅值在按照一定的规律变化。

如何记载这个波形的信息呢?尤其是量化的记载!

很难!

事实上,上述波形采用傅里叶变换后,就是一个50Hz的正弦波上叠加一个40Hz的正弦波,两者幅度不同,40Hz的幅度越大,波动幅度就越大,而波动的频率就是两者的差频10Hz(三相异步电动机叠频温升试验时的电流波形)。

再看一个看似简单的波形:

​这个波形有点像正弦波,但是,比正弦波尖,俗称“尖顶波”,多见于变压器空载电流输入波形。

我们很难准确定量其与正弦波的区别。

采用傅里叶变换后,得到下述频谱(幅值谱):

​主要包括3、5、7、9次谐波,一目了然!

傅里叶变换是一种信号分析方法,让我们对信号的构成和特点进行深入的、定量的研究。把信号通过频谱的方式(包括幅值谱、相位谱和功率谱)进行准确的、定量的描述。

这就是傅里叶变换的主要目的。

现在,我们知道傅里叶变换的目的了,剩下的问题是:

2、为什么傅里叶变换要把信号分解为正弦波的组合,而不是方波或三角波?

其实,如果张三能够证明, 任意信号可以分解为方波的组合,其分解的方法不妨称为张三变换;李四能够证明,任意信号可以分解为三角波的组合,其分解的方法也可以称为李四变换。

傅里叶变换是一种信号分析的方法。既然是分析方法,其目的应该是把问题变得更简单,而不是变得更复杂。傅里叶选择了正弦波,没有选择方波或其它波形,正好是其伟大之处!

正弦波有个其它任何波形(恒定的直流波形除外)所不具备的特点:正弦波输入至任何线性系统,出来的还是正弦波,改变的仅仅是幅值和相位,即:正弦波输入至线性系统,不会产生新的频率成分(非线性系统如变频器,就会产生新的频率成分,称为谐波)。用单位幅值的不同频率的正弦波输入至某线性系统,记录其输出正弦波的幅值和频率的关系,就得到该系统的幅频特性,记录输出正弦波的相位和频率的关系,就得到该系统的相频特性。

线性系统是自动控制研究的主要对象,线性系统具备一个特点,多个正弦波叠加后输入至一个系统,输出是所有正弦波独立输入时对应输出的叠加。

也就是说,我们只要研究正弦波的输入输出关系,就可以知道该系统对任意输入信号的响应。

这就是傅里叶变换的最主要的意义!

四、如何求傅里叶变换?

文章开始就说了,具体求傅里叶变换,有成熟的函数可供调用。本文只讲述如何理解傅里叶变换的思想。如果你掌握了这个思想,不用再记公式,也不用去调用什么函数,自己编个简单程序就可实现。就算你不会编程,只要你学过三角函数,至少可以理解傅里叶变换的过程。

傅里叶的伟大之处不在于如何进行傅里叶变换,而是在于给出了“任何连续周期信号可以由一组适当的正弦曲线组合而成”这一伟大的论断。

知道了这一论断,只要知道正弦函数的基本特性,变换并不难,不要记公式,你也能实现傅里叶变换!

正弦函数有一个特点,叫做正交性,所谓正交性,是指任意两个不同频率的正弦波的乘积,在两者的公共周期内的积分等于零。

这是一个非常有用的特性,我们可以利用这个特性设计一个如下的检波器(下称检波器A):

检波器A由一个乘法器和一个积分器构成,乘法器的一个输入为已知频率f的单位幅值正弦波(下称标准正弦信号f),另一个输入为待变换的信号。检波器A的输出只与待变换信号中的频率为f的正弦分量的幅值和相位有关。

​傅里叶变换检波器A

待变换信号可能包含频率为f的分量(下称f分量),也可能不包含f分量,总之,可能包含各种频率分量。一句话,待变换信号是未知的,并且可能很复杂!

没关系,我们先看看,待变换信号是否包含f分量。

因为其它频率分量与标准正弦信号f的乘积的积分都等于零,检波器A可以当它们不存在!经过检波器A,输出就只剩下与f分量有关的一个量,这个量等于待变换信号中f分量与标准正弦信号f的乘积的积分。

很容易得到的结论是:

如果输出不等于零,就说明输入信号包含f分量!

这个输出是否就是f分量呢?

答案:不一定!

正弦波还有下述的特性:

相同频率的正弦波,当相位差为90°时(正交),在一个周期内的乘积的积分值等于零;当相位相同时,积分值达到最大,等于两者的有效值的乘积,当相位相反时,积分值达到最小,等于两者的有效值的乘积取反。

我们知道标准正弦信号f的初始相位为零,但是,我们不知道f分量的初始相位!如果f分量与标准正弦信号f的相位刚好差90°(或270°),检波器A输出也等于零!为此,我们再设计一个检波器B:

检波器B与检波器A的不同之处在于检波器B用一个标准余弦信号f(与标准正弦信号A相位差90°)替代滤波器A中的标准正弦信号f。如果待变换信号中包含f分量,检波器A和检波器B至少有一个输出不等于零。

​傅里叶变换检波器B

利用三角函数的基础知识可以证明,不论f分量的初始相位如何,检波器A和检波器B输出信号的幅值的方和根就等于f分量的幅值;而检波器B和检波器A的幅值的比值等于f分量初始相位的正切,如此如此……即可求出f分量的相位。

我们再把标准正弦信号f和标准余弦信号f的频率替换成我们关心的任意频率,就可以得到输入信号的各种频率成分。如果知道输入信号的频率,把这个频率作为基波频率f0,用f0、2f0、3f0依次替代标准正弦信号f和标准余弦信号f的频率,就可以得到输入信号的基波、2次谐波和3次谐波。

这就是傅里叶变换!

什么?不会积分?

没有关系,实际上,在谐波检测仪、电能质量分析仪等各类电参量测量仪器中,现在用的都是基于交流采样的离散傅里叶变换,在离散信号处理中,累加就是积分!

傅里叶变换就是这么简单,您学会了吗?

来源:深入浅出的学习傅里叶变换 - RFASK射频问问

关于RFASK射频问问

射频问问是在"微波射频网”系列原创技术专栏基础上升级打造的技术问答学习平台,主要围绕射频芯片、微波电路、天线、雷达、卫星等相关技术领域,致力于为无线通信、微波射频、天线、雷达等行业的工程师,提供优质、原创的技术问答、专栏文章、射频课程等学习内容。更多请访问:RFASK射频问问 - 射频技术研发服务平台 | 技术问答、专栏文章、射频课程

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

敏捷-期末

什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开…

阿里云服务器ECS的功能特性有哪些?

本文介绍云服务器ECS的功能特性,帮助您更好地了解和使用云服务器ECS。 1、实例 实例是云上的虚拟计算服务器,内含vCPU、内存、操作系统、网络、磁盘等基础组件。您可以使用阿里云提供的控制台、API等管理工具创建和管理ECS实例,像使用本地服…

常用的 JVM 参数(第三章)

《实战Java虚拟机:JVM故障诊断与性能优化 (第2版)》 第三章 常用的 JVM 参数 3.1. 掌握跟踪调试参数 - 一切运行都有迹可循 参数类型参数作用备注GC 参数-JVM 提供了一些跟踪系统状态的参数,使用给定的参数执行 JVM,就可以在系统运行时打印…

基于ssm框架实现家庭理财收支系统(源码+数据库+文档)

一、项目简介 本项目是一套基于ssm框架实现家庭理财收支系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c…

【谷粒学院】微信扫码登录(199~206)

199.OAuth2介绍 OAuth2是什么? OAuth2是针对特定问题的一种解决方案 主要可以解决两个问题:开放系统间授权、分布式访问问题 一、OAuth2解决什么问题 1、OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服…

_Linux (HTTP协议)

文章目录1. 认识URL2. urlencode和urldecode3. HTTP协议格式3-1. HTTP请求3-1. HTTP响应4. HTTP的方法5. HTTP的状态码6. TTP常见Header7. 最简单的HTTP服务器虽然我们说, 应用层协议是我们程序猿自己定的但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我…

Java基础:JDK7-时间Date

JDK7以前时间相关类 1.Date Date date new Date(); , sout(date)得到的是现在所处位置的时间 Date date new Date(0L); , sout(date)得到的是时间原点也就是1970年1月1日08:00(东八区). date.setTime(1000L); sout(date)得到的是时间原点后一秒钟的时间 long time date.g…

【matplotlib】可视化解决方案——如何设置matplotlib风格集

概述 一般情况下,为了获得数据可视化展示效果,在代码实现的尾部会调用 plt.show(),这种情况下会调用默认的绘图风格,即白色底色,字体和线条呈现黑色。在某些情况下会显得很不协调。如果想要将展示效果以一个固定的风格…

华为OD机试用Python实现 -【称砝码】(2023-2-26华为OD机试人员抽到的真题)

华为OD机试题 华为 OD 机试 300 题大纲称砝码题目输入输出示例一输入输出说明:Python 代码展示编码思路华为 OD 机试 300 题大纲 参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/categor…

【JavaSE】集合(Map)

文章目录1.Map接口1.1常用方法1.2 遍历2.HashMap2.1Hash表数据结构2.2 Map.put实现原理2.3 Map.get实现原理2.4扩容2.5 同时重写hashCode和equals2.6 JAVA8对HashMap改进3.Hashtable4.Properties5.TreeMap5.1 概述5.2 自定义类实现Comparable6.集合工具类Collections1.Map接口 …

Linux | 1. 挂载新硬盘与磁盘管理

如有错误,恳请指出。 1. Ubuntu挂载新硬盘 查看磁盘状态:sudo fdisk -l 1)为新硬盘分区 使用 fdisk 指令对 /dev/sdb 进行分区操作:sudo fdisk /dev/sdb。进入分区工具后,我们可以输入 m 看指令说明,注意…

(四十八)大白话线上数据库不确定性的性能抖动优化实践(上)

之前我们花费了很大篇幅来给大家深入和细致的讲解数据库在执行增删改这类更新语句时候的底层原理,这里涉及到了很多数据库内核级的概念,比如buffer pool、redo log buffer、lru/flush链表,等等,大家对数据库执行更新语句的原理都有…

黑客入门破解网络密码常用的九个方法!

个人网络密码安全是整个网络安全的一个重要环节,如果个人密码遭到黑客破解,将引起非常严重的后果。比如,银行卡账户密码被盗,你就给别人打工了。所以,增强网民的网络安全意识是网络普及进程的一个重要环节。 常言道&am…

ThreadPoolExecutor执行流程和拒绝策略

【面试常考】 之前我们讲到的多线程案例里面的Executors 本质上是 ThreadPoolExecutor 类的封装. ThreadPoolExecutor 提供了更多的可选参数, 可以进一步细化线程池行为的设定. 什么是ThreadPoolExcutor类? 首先通过文档我们看看ThreadPoolExcutor提供给我们的构造…

超详细彻底卸载Anaconda详细教程

一、在开始出打开Anaconda Prompt 二、打开后,输入conda install tqdm -f命令并按回车键 conda install tqdm -f三、之后页面会出现一个WANNING,这个我们不用在意,之后会出现一个y/n提示框,在这里我们输入y或者Y y四、输入con…

小程序容器与微服务架构的关系

随着移动互联网的发展,小程序已经成为了一种非常流行的应用方式,它可以在不安装任何应用的情况下,直接在移动终端设备(如:App,iPad等)中运行。微服务架构则是一种的分布式系统架构,可…

SpringBoot整合MybatisPlus多数据源

相信在很多使用MybatisPlus框架的小伙伴都会遇到多数据源的配置问题,并且官网也给出了推荐使用多数据源 (dynamic-datasource-spring-boot-starter) 组件来实现。由于最近项目也在使用这个组件来实现多数据源切换,因此想了解一下该组件是如何运行的&…

以太网协议和DNS

目录 🐕今日良言:跨过困难,去迎接更好的自己. 🐳一、以太网桢格式 🐳二、DNS 🐕今日良言:跨过困难,去迎接更好的自己. 🐳一、以太网桢格式 数据链路层考虑的是相邻两个节点(通过网线/光纤/无线直接相连的两个设备…

有趣的表盘布局环绕动画

前言 C端的介绍页中,设计师设计动画特效都非常有意思。这次遇到了“表盘内容元素环绕效果”,类似于表盘中的分针在一格一格运动一样,只是这次动画运动的元素不一样。 效果如下: 实现表盘布局 合理的运用JavaScrip的三角函数&am…

Malware Dev 01 - 免杀之 PPID Spoofing 原理解析

写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助,并分享学习和实践过程…