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…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
《Docker》架构
文章目录 架构模式单机架构应用数据分离架构应用服务器集群架构读写分离/主从分离架构冷热分离架构垂直分库架构微服务架构容器编排架构什么是容器,docker,镜像,k8s 架构模式 单机架构 单机架构其实就是应用服务器和单机服务器都部署在同一…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
