当前位置: 首页 > news >正文

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题用最少数量的箭引爆气球

题目&#xff1a; 题解&#xff1a; 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 缓存&#xff0c;性能优化&#xff0c;提升时间效率&#xff0c;但是不要为了技术而优化&#xff0c;应该是为了业务而进行优化 内置Hooks保证基础功能&#xff0c;灵活配合实现业务功能&#xff0c;抽离公共部分&#xff0c;自定义Hooks或者第三方&am…...

69 BERT预训练_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录NLP里的迁移学习Bert的动机Bert架构对输入的修改五、预训练任务1、2、3、 六、1、2、3、 七、1、2、3、 八、1、2、3、 NLP里的迁移学习 之前是使用预训练好的模型来抽取词、句子的特征&#xff0c;例如 word2vec 或语言模型这种非深度学习…...

Java报错输出的信息究竟是什么?

Java报错输出的信息究竟是什么&#xff1f; 本篇会带大家了解一下java运行时报错输出的信息内容&#xff0c;简单学习一下虚拟机内存中Java虚拟机栈的工作方式以及栈帧中所存储的信息内容 异常信息 当你的程序运行报错时&#xff0c;你是否会好奇打印出来的那一大坨红色的究竟…...

解表之紫苏

** 声明&#xff1a;本文介绍的中药仅供学习使用&#xff0c;请勿擅自使用&#xff0c;否则后果自负&#xff01;&#xff01;&#xff01;因水平有限&#xff0c;如有不当之处&#xff0c;请批评指正&#xff01;&#xff01;&#xff01;&#xff01;图片来源网络&#xff0…...

JavaScript数据类型

目录 JavaScripit数据类型 原始类型&#xff08;Primitive Types&#xff09; 1 Undefined 特点 实例 2 Null 实例 3 Boolean 重点&#xff1a; 常用falsy情况&#xff1a; 思考 4 Number,BigInt 实例 特点 NaN 5 String 在JavaScript中表示字符串有三种表示方…...

市场中的新兴力量与未来发展

在当前瞬息万变的全球金融市场中&#xff0c;期货交易以其高杠杆与灵活性&#xff0c;吸引了越来越多的投资者参与其中。大粤期货作为中国期货行业的新兴力量&#xff0c;凭借其创新的交易平台、广泛的产品线及专业的风险管理服务&#xff0c;迅速在市场中崭露头角。本文将介绍…...

Golang | Leetcode Golang题解之第446题等差数列划分II-子序列

题目&#xff1a; 题解&#xff1a; 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的数据类型…...

量子计算:颠覆未来计算的革命性技术

量子计算&#xff1a;颠覆未来计算的革命性技术 量子计算作为下一代颠覆性技术&#xff0c;正在引领计算领域的重大变革。与传统计算机基于比特的二进制运算不同&#xff0c;量子计算通过量子比特&#xff08;qubits&#xff09;在叠加态和纠缠态下实现并行计算&#xff0c;能…...

ctfshow-web入门(信息收集,持续更新中。。)

写在之前:近期打了个比赛,备受打击,入手了vip账号进修,加油! 文章目录 ctfshow-web1查看源代码ctfshow-web2burp抓包ctfshow-web3burp抓包ctfshow-web4访问robots.txtctfshow-web5dirscarch扫描PHPS文件泄露ctfshow-web6dirscarch扫描ctfshow-web7dirscarch扫描ctfshow-w…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

机器学习的数学基础:线性模型

线性模型 线性模型的基本形式为&#xff1a; f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法&#xff0c;得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...

动态规划-1035.不相交的线-力扣(LeetCode)

一、题目解析 光看题目要求和例图&#xff0c;感觉这题好麻烦&#xff0c;直线不能相交啊&#xff0c;每个数字只属于一条连线啊等等&#xff0c;但我们结合题目所给的信息和例图的内容&#xff0c;这不就是最长公共子序列吗&#xff1f;&#xff0c;我们把最长公共子序列连线起…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)

这是系统中断服务程序的默认处理汇编函数&#xff0c;如果我们没有定义实现某个中断函数&#xff0c;那么当stm32产生了该中断时&#xff0c;就会默认跑这里来了&#xff0c;所以我们打开了什么中断&#xff0c;一定要记得实现对应的系统中断函数&#xff0c;否则会进来一直循环…...