FFT 分析进阶-笔记
FFT 分析进阶
- 边界不连续与泄漏效应
- 解决方法增加窗函数
- 海宁窗与哈布什窗
- 混叠效应
- 频率高到什么程度会出现混叠现象呢?
- 那我们有办法去应对这个混叠吗?
- 经典平均
- 指数平均
- 关于结果的显示模式
- FFT计算的三个常见的范例
- 计算FFT图谱中某一段的总值,图中这边橙色标记的这一段
- 特定高次谐波的和
- 信噪比SNR的一个计算
- 总结
边界不连续与泄漏效应
对于输入信号进行一个采样,每次会采一段的长度,然后把各段给它连接起来,这样子才能计算出FFT的一个频谱。
当信号在时间窗口内不完整时(即信号开始和结束时的值不相等),会在频域产生额外的频率分量,即泄漏效应。这会导致原本单一频率的信号在频谱图上表现为多个频率分量。

得出来的FFT频谱中,有两段之间其实我们注意看一下,这边会有一个突变,这个就导致了FFT的泄露,或者叫弥散的一个效应。
解决方法增加窗函数
出现泄露之后,我们看看的这个图,它就不是一个基波跟这个噪声区分非常明显的一个图谱了。应对的方法就是加一个窗函数就可以了。

增加窗函数使得每一段信号之间的过渡就会趋于平缓,结果受到的影响也会降到最低。
不同的窗函数对结果的影响显然也是不一样的,应用时选择一个合适的窗函数就显得非常的重要。比较流行的是海宁窗和哈布什窗这两个窗函数。一般来说这两个窗函数可以使用在大部分的应用场景之中。

红色的这个曲线它的旁瓣就是这两边的谐波,我们可以看到,压制的非常厉害,几乎只剩下中心频率的中心的这这一段。这样就可以把旁边两边的这些频率的弥散效应压的很低,而基波非常的突出。
同时我们也可以看到红色曲线的中间的频宽,这边中间的频宽要比黑色的要宽一些。所以说如果单独我们要找出某一个频率的话,那黑色的窗函数就比红色的这个窗函数要更加的好。黑色的窗函数的这个问题就是这旁瓣更多。
海宁窗与哈布什窗
海宁窗特点:海宁窗具有较好的频率选择性,适用于多个频率混在一起的信号。它的旁瓣较小,中心频率突出。
哈布什窗特点:哈布什窗的频率选择性较窄,适用于找出高速谐波。它的旁瓣较多,但中心频率更加集中。

这个绿色的就是哈布什窗,然后红色的就是海宁窗。
红色曲线其实就是直接的给它进行一个压制,这就意味着这个红色曲线的频率可选性更大。总的来说就是海宁窗它适合那种有多个频率混在一起的信号。而哈布什窗找频率比较的窄一点,它就适合去找出高速谐波。
混叠效应

混叠通常出现在对信号采样信号的一个重构的过程中,基于这些数字化的这些数值,仪器相当于重新重构了这样的一个输入信号。当然采样率越高的话,我们的这个采样也就越密集,这个重构就越精准。

如果我们这个输入信号的频率非常的大,我们还是以同样的这个采样率去进行一个采样。我们后面得到的这个bin的频率就非常的高。但是这个只是理想的情况,而实际情况频率越来越大。但是我分析一个采样率是有限的,这样采样的数据并不能代表完整的信号,重构出来的信号可能跟你原始的信号也变得不一样了。

因为采样点是有限的,所以我们只能重构出红色虚线这样的信号,从而计算出来的FFT频率要小于实际的频率,这重构的就是实际的要小于这个实际的频率。这个错误的频率实际上就是这个实际频率的一个混叠。
频率高到什么程度会出现混叠现象呢?

当这个频率超出我们采样率一半的时候就会出现混叠。那我们假设这个绿色的这个区域代表的是我是我仪器的带宽,就是FFT采样率的一半。只要超出这个频率就会出现一个混叠采样率一半的这个频率。还有一个学名叫奈奎斯特频率。
那我们有办法去应对这个混叠吗?
答案是肯定的,而且很简单,只需要加一个低通的滤波,但注意这个低通滤波器一定要加模拟的滤波器。因为数字滤波器还是会遇到同样的问题。数字滤波器它没有办法区分原始信号和原始信号的低频和这个混叠后产生的一个低频,它没办法区别的区分。
经典平均

连续测出了第二段、第三段,然后仪器自动的计算这三段的一个平均值,显示出这个平均值。

接着仪器继续去采样,等三段结果出来的时候,我再去做一个平均,然后显示出来这里每一段采样在这里面每一段的采样在结果中显示出来的权重是一样的。
指数平均
也有第一段采样,接着是第二段,然后第三段,我们计算出一个FFT的频谱出来。

但是我们注意它计算的权重是第三个,最近的这一个权重是最大的。

然后接下来我们又出现了一个新的一个图谱,再一次的去进行一个采样。
采样这个采样完成之后,仪器又立刻计算出了一个平均值。这个平均值,他就把第一个出现的结果给它剔除掉了。
经典平均一般用在单次测量中。比如说产线上对产品进行品控,每个产品测一次就可以得到结果。
而指数平均就适合连续监测的一个场景,它能记录出信号随时间变化的一个情况。
关于结果的显示模式
假设我的快长度设置的是8K,那就是说每次测试的结果里面包含了8000个点的数值。不说显示器能不能显示出这么多个点,就算把数据都记录下来,我们也很难找到有意义的一些信息。最终办法是将其合并起来。

FFT计算的三个常见的范例
计算FFT图谱中某一段的总值,图中这边橙色标记的这一段

特定高次谐波的和

信噪比SNR的一个计算

图谱里面最高的这一个点是基波,是一个是信号。然后看到基波的左边和基波的右边,左边是一些低频的噪声,然后右边其实它里面还有一些高速谐波,这在这个里面,这个时候我们就需要做一个计算,信号值的话就只有一个。
总结

相关文章:
FFT 分析进阶-笔记
FFT 分析进阶 边界不连续与泄漏效应解决方法增加窗函数海宁窗与哈布什窗混叠效应频率高到什么程度会出现混叠现象呢?那我们有办法去应对这个混叠吗?经典平均指数平均关于结果的显示模式FFT计算的三个常见的范例计算FFT图谱中某一段的总值,图中…...
毕业设计_基于springboot+layui+mybatisPlus的中小型仓库物流管理系统源码+SQL+教程+可运行】41004
毕业设计_基于springbootlayuimybatisPlus的中小型仓库物流管理系统源码SQL教程可运行】41004 下载地址: https://download.csdn.net/download/qq_24428851/89843203 技术栈 后端:springboot、mybatis-plus、shiro 前端:layUI 存储&…...
ROS基础入门——实操教程
ROS基础入门——实操教程 前言 本教程实操为主,少说书。可供参考的文档中详细的记录了ROS的实操和理论,只是过于详细繁杂了,看得脑壳疼,于是做了这个笔记。 Ruby Rose,放在这里相当合理 本文初编辑于2024年10月4日 C…...
etcd 快速入门
简介 随着go与kubernetes的大热,etcd作为一个基于go编写的分布式键值存储,逐渐为开发者所熟知,尤其是其还作为kubernetes的数据存储仓库,更是引起广泛专注。 本文我们就来聊一聊etcd到底是什么及其工作机制。 首先,…...
Spring MVC__HttpMessageConverter、拦截器、异常处理器、注解配置SpringMVC、SpringMVC执行流程
目录 一、HttpMessageConverter1、RequestBody2、RequestEntity3、ResponseBody4、SpringMVC处理json5、SpringMVC处理ajax6、RestController注解7、ResponseEntity7.1、文件下载7.2、文件上传 二、拦截器1、拦截器的配置2、拦截器的三个抽象方法3、多个拦截器的执行顺序 三、异…...
GAMES101(19节,相机)
相机 synthesis合成成像:比如光栅化,光线追踪,相机是capture捕捉成像, 但是在合成渲染时,有时也会模拟捕捉成像方式(包括一些技术 动态模糊 / 景深等),这时会有涉及很多专有名词&a…...
Django Nginx+uwsgi 安装配置
Django Nginx+uwsgi 安装配置 本文将详细介绍如何在Linux环境下安装和配置Django应用程序,使用Nginx作为Web服务器和uwsgi作为应用程序服务器。我们将覆盖以下主题: 安装Python和相关库安装和配置Django安装Nginx安装和配置uwsgi配置Nginx以使用uwsgi测试和调试1. 安装Pytho…...
oracle数据备份和导入
一、数据导出 创建目录对象: CREATE DIRECTORY dpump_dir AS /path/to/your/directory;授予权限: GRANT READ, WRITE ON DIRECTORY dpump_dir TO test_user; #导出的用户导出全库数据 expdp your_user/your_password DIRECTORYdpump_dir DUMPFILEfu…...
C++ | Leetcode C++题解之第452题用最少数量的箭引爆气球
题目: 题解: class Solution { public:int findMinArrowShots(vector<vector<int>>& points) {if (points.empty()) {return 0;}sort(points.begin(), points.end(), [](const vector<int>& u, const vector<int>&…...
react-问卷星项目(3)
项目实战 React Hooks 缓存,性能优化,提升时间效率,但是不要为了技术而优化,应该是为了业务而进行优化 内置Hooks保证基础功能,灵活配合实现业务功能,抽离公共部分,自定义Hooks或者第三方&am…...
69 BERT预训练_by《李沐:动手学深度学习v2》pytorch版
系列文章目录 文章目录 系列文章目录NLP里的迁移学习Bert的动机Bert架构对输入的修改五、预训练任务1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 NLP里的迁移学习 之前是使用预训练好的模型来抽取词、句子的特征,例如 word2vec 或语言模型这种非深度学习…...
Java报错输出的信息究竟是什么?
Java报错输出的信息究竟是什么? 本篇会带大家了解一下java运行时报错输出的信息内容,简单学习一下虚拟机内存中Java虚拟机栈的工作方式以及栈帧中所存储的信息内容 异常信息 当你的程序运行报错时,你是否会好奇打印出来的那一大坨红色的究竟…...
解表之紫苏
** 声明:本文介绍的中药仅供学习使用,请勿擅自使用,否则后果自负!!!因水平有限,如有不当之处,请批评指正!!!!图片来源网络࿰…...
JavaScript数据类型
目录 JavaScripit数据类型 原始类型(Primitive Types) 1 Undefined 特点 实例 2 Null 实例 3 Boolean 重点: 常用falsy情况: 思考 4 Number,BigInt 实例 特点 NaN 5 String 在JavaScript中表示字符串有三种表示方…...
市场中的新兴力量与未来发展
在当前瞬息万变的全球金融市场中,期货交易以其高杠杆与灵活性,吸引了越来越多的投资者参与其中。大粤期货作为中国期货行业的新兴力量,凭借其创新的交易平台、广泛的产品线及专业的风险管理服务,迅速在市场中崭露头角。本文将介绍…...
Golang | Leetcode Golang题解之第446题等差数列划分II-子序列
题目: 题解: func numberOfArithmeticSlices(nums []int) (ans int) {f : make([]map[int]int, len(nums))for i, x : range nums {f[i] map[int]int{}for j, y : range nums[:i] {d : x - ycnt : f[j][d]ans cntf[i][d] cnt 1}}return }...
Java 常用序列化对比
Java 中常用的序列化方式主要包括以下几种: 1. Java 原生序列化 使用方式: 使用 java.io.Serializable 接口。对象需要实现该接口,然后通过 ObjectOutputStream 和 ObjectInputStream 进行序列化和反序列化。 示例代码: import java.io.*;public class Person impleme…...
【redis学习篇1】redis基本常用命令
目录 redis存储数据的模式 常用基本命令 一、set 二、keys pattern keys 字符串当中携带问号 keys 字符串当中携带*号 keys 【^字母】 keys * 三、exists 四、del 五、expire 5.1 ttl命令 5.2key删除策略 5.2.1惰性删除 5.2.2定期删除 六、type key的数据类型…...
量子计算:颠覆未来计算的革命性技术
量子计算:颠覆未来计算的革命性技术 量子计算作为下一代颠覆性技术,正在引领计算领域的重大变革。与传统计算机基于比特的二进制运算不同,量子计算通过量子比特(qubits)在叠加态和纠缠态下实现并行计算,能…...
ctfshow-web入门(信息收集,持续更新中。。)
写在之前:近期打了个比赛,备受打击,入手了vip账号进修,加油! 文章目录 ctfshow-web1查看源代码ctfshow-web2burp抓包ctfshow-web3burp抓包ctfshow-web4访问robots.txtctfshow-web5dirscarch扫描PHPS文件泄露ctfshow-web6dirscarch扫描ctfshow-web7dirscarch扫描ctfshow-w…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
