揭开FFT时域加窗的奥秘

news2024/11/9 10:08:49

FFT – Spectral Leakage

假设用于ADC输出数据分析的采样点数为N,而采样率为Fs,那我们就知道,这种情况下的FFT频谱分辨率为δf,那么δf=Fs/N。如果此时我们给ADC输入一个待测量的单频Fin,如果此时Fin除以δf不是整数,就会产生频率泄露。要尽可能保证测得的FFT不会产生频谱泄露,有两种方式进行处理,相干采样和时域加窗

(1)相干采样

假设M是我们需要采样的输入信号的周期数,那么M/Fin=N/Fs,也就是两个时间长度是一致的,也就是Fin/ Fs=M/N,这个比值要能够被表达成为有理数(也就是整数或者分数)N必须是2的幂数(这是从蝶形运算的角度考虑的)。MN还必须要互为质数(这样可以避免重复采样相同位置的,重复采样周期信号相同的位置点不会获得额外的信息,因此不推荐M非素数(素数,除了1和它本身以外不再有其他因数的自然数))。如果选择了M/N为非互质时,将导致信号周期性的量化,以及仅有少量的量化步进被测试。量化周期性的重复,建立了一个线谱,它是一个令人费解的实频率线(如下图2所示在谐波镜像之下的红线,这是由ADC的非线性导致的,而黑色痕迹则是因为量化周期的重复性导致的,也就是M/N为非互质导致的,图3是采用相干采样得到的结果

从相干采样的描述来看,相干采样的输入信号Fin和采样频率Fs必须是同步信号。另外相干采样可以确保信号功率仅在一个FFT bin(也就是频谱分辨率)之中。

图1 想干采样定理:
在这里插入图片描述

图2 重复相同位置采样导致的谐波痕线抬升:在这里插入图片描述

图3 相干采样改善还原了真实的非线性特性:
在这里插入图片描述

(2)时域加窗

如果采样的波形是非连续的,也就是采集的样本不是信号的整数倍周期,那么就需要消除这种现象,从而减小FFT的频谱泄露(注意不是完全改善),TI的官方文档为我们展示了这一现象,如下图3所示,对信号进行了时域加窗,加窗之后频谱泄露有所减小

图4 非周期采样频谱泄露展示:
在这里插入图片描述

很明显No window(矩形窗)的旁瓣非常高,也就意味着,它的泄露抑制的不是很好。但是频率分辨率准确,幅值精度低。

  • 不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截短产生了能量泄漏,而用 FFT 算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。(矩形窗 主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;布莱克曼窗主瓣宽,旁瓣小,频率识别精度 最低,但幅值识别精度最高)
  • Hanning(汉宁窗)是使用最广泛的一种窗函数,除此之外还有,Hamming(海明窗),Flat-top 窗和 Balckman-Harris 窗,矩形窗产生最窄的谱线,加 Flat-top 窗谱线最宽。旁瓣的影响和精确频率分辨率 有时候是不可兼得的。(矩形窗主瓣窄,旁瓣大,频率识别精度最高,幅值识别精度最低;Flat-top 窗主瓣 宽,旁瓣小,频率识别精度最低,但幅值识别精度最高)

图5 TI官方的不同窗函数的频谱特性:
在这里插入图片描述

图6 不同应用使用的窗函数:
在这里插入图片描述

  • Processing loss(dB),也叫做相干功率增益,对一个信号进行加窗操作之后将会减少信号在时域上的幅值,尤其是在窗函数的左右边界,这种幅度的减小会引入幅度误差,每个窗函数的这种处理损失不太一样,TI已经列于下表之中,矩形窗不存在损失

  • Scalloping loss(dB),由于FFT变换的结果是离散的,那么信号的频率有可能会落在两个FFT bin之间,这样原本的功率就会被分散到两个bin上,从而相对于原先的功率就会产生损失,这就叫做栅栏损失

在这里插入图片描述
在这里插入图片描述

图7 不同窗函数使用的处理误差:
在这里插入图片描述

图8 不同窗函数的形状:
在这里插入图片描述

TIADC分析软件,内部已经对加窗处理损失进行修正。

大家可自行使用FFT分析软件分析一下非整周期采样使用各种窗口的结果,加深理解Highest side lobe level、Processing loss、Scalloping loss以及Half main lobe width。应用时域加窗技术会影响频谱分辨率

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

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

相关文章

IP地址冲突检测(Address Conflict Detect)记录

学习目标: 提示:ACD(IP地址冲突检测)原理学习与抓包分析 学习记录: 1、Address Conflict Detection地址冲突检测,简称ACD。RFC 5227提出ACD机制。其中ACD将arp request分为ARP probe和ARP announcement两种; ACD定义…

数据中心网络运维探讨

数据中心网络运维探讨 数据中心网络运维通过科学的网络架构设计、实时监控管理、智能化运维工具和全面的安全防护,确保网络的高效、安全运行。它不仅提升了运维效率和网络可靠性,还保障了业务的连续性和数据安全。随着技术的不断进步,智能化…

常见机器学习的原理及优略势

有监督 一、线性回归(Linear Regression) 1. 算法原理 线性回归(Linear Regression)是一种基本的回归算法,它通过拟合一个线性模型来预测连续型目标变量。线性回归模型的基本形式是:y w1 * x1 w2 * x2 … wn * …

在python中关于元组的操作

创建元组 如上图所示,a()和b tuple(),,这两种方式都可以创建出元组。 在创建元组的时候,指定初始值 如上图所示,也可以在创建元组的时候,指定初始值。 同列表一样元组中的元素也可以是任意类型的。 同列…

Map深度学习

Map Map是一个键值对的集合,和object类似,Map作为构造函数,可以通过全局对象获取到。需要通过new操作创建实例对象,直接调用会报错。Map构造函数接受一个iterable类型的函数,用来初始化Map。 var m new Map([[1, &qu…

pyrouge(ROUGE-1.5.5)的安装步骤和使用说明(适用于Linux 系统)

摘要:本文讲解了如何配置和使用文本摘要的评价指标ROUGE(linux 系统)。 ✅ NLP 研 1 选手的学习笔记 简介:小王,NPU,2023级,计算机技术 研究方向:摘要生成、大语言模型生成 文章目录 一、为啥要写这篇博客&…

Redis 双写一致原理篇

前言 我们都知道,redis一般的作用是顶在mysql前面做一个"带刀侍卫"的角色,可以缓解mysql的服务压力,但是我们如何保证数据库的数据和redis缓存中的数据的双写一致呢,我们这里先说一遍流程,然后以流程为切入点来谈谈redis和mysql的双写一致性是如何保证的吧 流程 首先…

flink源码系列:RPC通信

这里写目录标题 1. 本节课目的2.开始本节内容2.1.RPC概念3.2.大数据组件常见的RPC实现技术3.3.Pekko(Akka)3.3.1. Akka、Pekko基本概念3.3.2.Pekko Demo事例3.3.2.1.PekkoData 类3.3.2.2.PekkoRpcReceiverActor类3.3.2.3.PekkoRpcSenderActor 类3.3.2.4.…

传感器展会|2024厦门传感器与应用技术展览会

传感器展会|2024厦门传感器与应用技术展览会 时间:2024年11月1-3日 地点:厦门国际会展中心 XISE EXPO展会介绍: 2024中国(厦门)国际传感器与应用技术展览会将于2024年11月1-3日在厦门国际会展中心举行&#xf…

基于标定数据将3D LiDAR点云与相机图像对齐(含C++版本代码)

这段C代码演示了如何将Velodyne激光雷达的点云数据投影到相机图像上。该过程涉及以下主要步骤: 读取并解析来自文件的标定数据,包括P2矩阵、R0_rect矩阵和Tr_velo_to_cam矩阵。这些矩阵用于将激光雷达点云从Velodyne坐标系转换到相机坐标系。从二进制文件中读取Velo…

10.1 Go Goroutine

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

解密Spring Boot:深入理解条件装配与条件注解

文章目录 一、条件装配概述1.1 条件装配的基本原理1.2 条件装配的作用 二、常用注解2.1 ConditionalOnClass2.2 ConditionalOnBean2.3 ConditionalOnProperty2.4 ConditionalOnExpression2.5 ConditionalOnMissingBean 三、条件装配的实现原理四、实际案例 一、条件装配概述 1…

SpringBoot中实现一个通用Excel导出功能

SpringBoot中实现一个通用Excel导出功能 文章目录 SpringBoot中实现一个通用Excel导出功能这个导出功能的特色看效果代码解析1、依赖2、Excel 入参(ExcelExportRequest)3、Excel 出参(ExcelExportResponse)4、ExcelExportField5、ExcelExportUtils 工具类6、ExcelHead 头部…

LeetCode1318或运算的最小翻转次数

题目描述 给你三个正整数 a、b 和 c。你可以对 a 和 b 的二进制表示进行位翻转操作,返回能够使按位或运算 a OR b c 成立的最小翻转次数。「位翻转操作」是指将一个数的二进制表示任何单个位上的 1 变成 0 或者 0 变成 1 。 解析 这一题就按位依次比较就行了。取这…

【SQLAlChemy】Query函数可传入的参数有哪些?

Query 函数的使用 参数种类 一般可以传递的参数有如下三种: 模型名。指定查找这个模型的全部属性(对应于数据库查询中的全表查询)。模型中的属性。可以用来指定只查询某个模型的几个属性值。使用聚合函数。 func.count():统计行的数量。fu…

【机器学习】GPT-4中的机器学习如何塑造人类与AI的新对话

🚀时空传送门 🔍引言📕GPT-4概述🌹机器学习在GPT-4中的应用🚆文本生成与摘要🎈文献综述与知识图谱构建🚲情感分析与文本分类🚀搜索引擎优化💴智能客服与虚拟助手&#x1…

打造智慧校园信息系统,提升学校科技实力

在如今数字化的时代,打造智慧校园信息系统已成为提升学校科技实力的关键。随着科技的迅猛发展,学校需要跟上时代步伐,利用先进技术建设一个高效、智能的信息系统,为学生、教师和管理人员提供更好的学习和工作环境。 智慧校园信息系…

企业官网:过时了,但又没完全过时

作为一名互联网冲浪级选手,我经常会看到一些有趣的产品。 这两年比较让我感兴趣的产品有「飞聊」、「即刻」及其旗下的「橙 App」等等,然后我就想上它们的官网看看。 虽然现在 app 是主流,但我非常不喜欢下载 app,一是麻烦&…

数据结构与算法笔记:基础篇 - 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?

概述 上篇文章,我们学习了树、二叉树及二叉树的遍历,本章来学习一种特殊的二叉树,二叉查找树。二叉查找树最大的特点就是,支持动态数据集合的快速插入、删除、查找操作。 之前说过,散列表也是支持这些操作的&#xf…

RAG:如何从0到1搭建一个RAG应用

通过本文你可以了解到: 什么是RAG?如何搭建一个RAG应用?目前开源的RAG应用有哪些? 大模型学习参考: 1.大模型学习资料整理:大模型学习资料整理:如何从0到1学习大模型,搭建个人或企业…