信号的FFT变换与加窗

news2024/11/24 17:10:15

1. fft 傅里叶变换

1.1 傅里叶变换的本质

数学上有一种公式叫做 泰勒展开:
在这里插入图片描述

泰勒公式: 其表达的思想,是任意一函数可以有多个指数函数构成

当指数函数的个数趋近于无穷多个,那么组合出来的函数将会逼近原函数;

同样的, 傅里叶想说的,
在信号处理领域, 在时域中,任意一个信号可以由多个正弦信号构成。

在频域中,任意一个信号可以由多个频率分量构成。

1.2 傅里叶变换在时域中的作用

傅立叶变换有助于理解常见的信号,以及如何辨别信号中的错误。 尽管傅立叶变换是一个复杂的数学函数,但是通过一个测量信号来理解傅立叶变换的概念并不复杂。 从根本上说,傅立叶变换将一个信号分解为不同幅值和频率的正弦波。 我们继续来分析这句话的意义所在。
所有信号都是若干正弦波的和

我们通常把一个实际信号看作是根据时间变化的电压值。 这是从时域的角度来观察信号。 傅立叶定律指出,任意波形在时域中都可以由若干个正弦波和余弦波的加权和来表示。 例如,有两个正弦波,其中一个的频率是另一个的3倍。 将两个正弦波相加,就得到了一个不同的信号。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1.3.1 时域中,信号分解的应用

您创建了一个方波。 通过这种方法,所有时域中的信号都可表示为一组正弦波。
即使可以通过这种方法构造信号,那意味着什么呢? 因为可以通过正弦波构造信号,同理也可以将信号分解为正弦波。 一旦信号被分解,可查看和分析原信号中不同频率的信号。 请参考信号分解的下列使用实例:

  • 分解广播信号,可选择要收听的特定频率(电台)。
  • 将声频信号分解为不同频率的信号(例如,低音、高音),可增强特定频段,移除噪声。
  • 根据速度和强度分解地震波形,可优化楼宇设计,避免强烈震动。
  • 分解计算机数据时,可忽略频率重要性最低的数据,这样就能更紧凑地利用内存。这就是文件压缩的原理。

1.3 傅里叶变换在频域中的作用

傅立叶变换将一个时域信号转换为频域信号。 频域信号显示了不同频率对应的电压。 频域是另一种观察信号的角度。

数字化仪对波形进行采样,然后将采样转换为离散的值。 因为发生了转换,傅立叶转换在这些数据上无法进行。 可使用离散傅立叶变换(DFT),其结果是离散形式的频域信号。 FFT是DFT的一种优化实现,计算量较少,但是本质上是对信号的分解。

请查看上图1中的信号。 有两个频率不同的信号。在该情况下,频域中就会显示两条表示不同频率的竖线。

在这里插入图片描述
原信号的幅值在竖轴上表示。 图2中有个不同幅值的信号。频域中最高的竖线对应于最高电压的正弦信号。 在频域里观察信号,可直观地看出最高电压发生在哪个频率上。

在这里插入图片描述

在这里插入图片描述

现实生活中,情况是怎样的呢? 许多混合信号示波器(MSO)都有FFT功能。 下图中,你可以观察到混合信号图中,方波FFT是如何显示的。 放大后可观察到频域中的尖峰。

在这里插入图片描述
在频域中观察信号有助于验证和发现信号中的问题。 例如,假设有一个输出正弦波的电路。 可在示波器上查看时域输出信号,如图8所示。 看上去没有任何问题!

在这里插入图片描述
在频域中查看信号时,如果输出的正弦波频率稳定,应该只在频率中显示为一条竖线。 但是,可以看到在更高的频率上仍然有一条竖线,表示正弦波并不如观察到的那么完美。 可尝试优化电路,去除特定频率的噪声。 在频域中显示信号有助于发现信号中的干扰、噪声和抖动。

在这里插入图片描述

查看图8中看似完美的正弦波,可以看出波形中有一个抖动

2. 信号的分帧

3. 信号的加窗

FT提供了观察信号的新视角,但是FFT也有各种限制,可通过加窗增加信号的清晰度。

3.1 加窗的含义

使用FFT分析信号的频率成分时,分析的是有限的数据集合。 FFT认为波形是一组有限数据的集合,一个连续的波形是由若干段小波形组成的。 对于FFT而言,时域和频域都是环形的拓扑结构。时间上,波形的前后两个端点是相连的。 如测量的信号是周期信号,采集时间内刚好有整数个周期,那么FFT的上述假设合理。

12

在这里插入图片描述

在很多情况下,并不能测量到整数个周期。 因此,测量到的信号就会被从周期中间切断,与时间连续的原信号显示出不同的特征。有限数据采样会使测量信号产生剧烈的变化。 这种剧烈的变化称为不连续性。

采集到的周期为非整数时,端点是不连续的。 这些不连续片段在FFT中显示为高频成分。这些高频成分不存在于原信号中。 这些频率可能远高于奈奎斯特频率,在0~ 采样率的一半的频率区间内产生混叠。 使用FFT获得的频率,不是原信号的实际频率,而是一个改变过的频率。 类似于某个频率的能量泄漏至其他频率。 这种现象叫做频谱泄漏。频率泄漏使好的频谱线扩散到更宽的信号范围中。

在这里插入图片描述

在这里插入图片描述

可通过加窗来尽可能减少在非整数个周期上进行FFT产生的误差。 数字化仪采集到的有限序列的边界会呈现不连续性。加窗可减少这些不连续部分的幅值。

加窗包括将时间记录乘以有限长度的窗,窗的幅值逐渐变小,在边沿处为0。 加窗的结果是尽可能呈现出一个连续的波形,减少剧烈的变化。 这种方法也叫应用一个加窗。

在这里插入图片描述

3.2 窗函数的种类

根据信号的不同,可选择不同类型的加窗函数。 要理解窗对信号频率产生怎样的影响,就要先理解窗的频率特性。

窗的波形图显示了窗本身为一个连续的频谱,有一个主瓣,若干旁瓣。 主瓣是时域信号频率成分的中央,旁瓣接近于0。 旁瓣的高度显示了加窗函数对于主瓣周围频率的影响。 对强正弦信号的旁瓣响应可能会超过对较近的弱正弦信号主瓣响应。 一般而言,低旁瓣会减少FFT的泄漏,但是增加主瓣的带宽。 旁瓣的跌落速率是旁瓣峰值的渐进衰减速率。 增加旁瓣的跌落速率,可减少频谱泄漏。

选择加窗函数并非易事。 每一种加窗函数都有其特征和适用范围。 要选择加窗函数,必须先估计信号的频率成分。

如果您的信号具有强干扰频率分量,与感兴趣分量相距较远,那么就应选择具有高旁瓣下降率的平滑窗。

如果您的信号具有强干扰频率分量,与感兴趣分量相距较近,那么就应选择具有低最大旁瓣的窗。

如果感兴趣频率包含两种或多种很距离很近的信号,这时频谱分辨率就非常重要。 在这种情况下,最好选用具有窄主瓣的平滑窗。
如果一个频率成分的幅值精度比信号成分在某个频率区间内精确位置更重要,选择宽主瓣的窗。
如信号频谱较平或频率成分较宽,使用统一窗,或不使用窗。
总之,Hanning窗适用于95%的情况。 它不仅具有较好的频率分辨率,还可减少频谱泄露。 如果您不知道信号特征但是又想使用平滑窗,那么就选择Hanning窗。
即使不使用任何窗,信号也会与高度一致的长方形窗进行卷积运算。本质上相当于对时域输入信号进行截屏,对离散信号也有效。 该卷积有一个正弦波函数特性的频谱。 基于该原因,没有窗叫做统一窗或长方形窗。

Hamming窗和Hanning窗都有正弦波的外形。 两个窗都会产生宽波峰低旁瓣的结果。 Hanning窗在窗口的两端都为0,杜绝了所有不连续性。 Hamming窗的窗口两端不为0,信号中仍然会呈现不连续性。 Hamming窗擅长减少最近的旁瓣,但是不擅长减少其他旁瓣。 Hamming窗和Hanning适用于对频率精度要求较高对旁瓣要求较低的噪声测量。

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

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

相关文章

Pandas数据查询

Pandas数据查询 Pandas查询数据的几种方法 df.loc方法,根据行、列的标签值查询 df.iloc方法,根据行、列的数字位置查询 df.where方法 df.query方法 .loc既能查询,又能覆盖写入,强烈推荐! Pandas使用df.loc查询数据…

深度学习基础(二)-学习是怎么个回事

深度学习基础(一) 引入了一个 helloworld,提出了神经网络的简单关系,也就是一个基础公式 a(L) Sigmoid( a(L-1)*W(L) b(L)) a(L): 第L层神经元被激活之后 进行Sigmoid函数收敛 得到的值 b(L): 第L层神经元被激活阈值 W(L): 第L层神经元 与 第L-1层…

Android安卓中jni封装代码打包为aar

前文【Android安卓中jni与Java之间传递复杂的自定义数据结构】已经介绍jni编译c++代码且已经成功封装成java,但是c++是以源代码形式继承在app中,本文介绍如何将前述jni c++代码以隐藏源代码封装成aar的形式。 1、aar打包 1.1、新建module 按照流程 File -> New Module …

学习周报2.26

文章目录前言文献阅读摘要方法结果深度学习Encoder-Decoder(编码-解码)信息丢失的问题Attention机制总结前言 This week,I read an article about daily streamflow prediction.This study shows the results of an in-depth comparison between two di…

Oracle-RAC集群主机重启问题分析

问题背景: 在对一套两节点Oracle RAC19.18集群进行部署时,出现启动数据库实例就会出现主机出现重启的情况,检查发现主机重启是由于节点集群被驱逐导致​。 问题: 两节点Oracle RAC19.18集群,启动数据库实例会导致主机出现重启。 问题分析: 主机多次出现…

2023年第八周总周结 | 开学倒数第一周

为什么要做周总结? 1.避免跳相似的坑 2.客观了解上周学习进度并反思,制定可完成的下周规划 一、上周存在问题 发现自己反复犯同样问题,不想反思就不会意识到。总想以面带点的学习,实际上却在原地踏步。问题导向使用ChatGPT&#…

目标检测:DETR详解

1. 概述 DETR: End-to-End Object Detection with Transformers, DETR 是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,是Transformer在目标检测的开山之作 – DEtection TRansformer。 相比于传统的Faster-rcnn,yolo系列,DETR有以下几个优点:1).无需…

微信实时音视频通话数据流分析

一、实时音视频的架构 实时音视频通信架构主要包括P2P、SFU、MCU三种方式,其中点对点通信通常以P2P优先,P2P走不通的场景再借助于SFU/MCU。 P2P方式,终端之间点对点的相互收发数据流,音视频流不经过服务器; SFU是端侧…

scrapy下载图片

🐱 个人主页:莎萌玩家🙋‍♂️ 作者简介:全栈领域新星创作者、专注于全栈各领域技术,共同学习共同进步,一起加油呀!💫系列专栏:网络爬虫、WEB全栈开发📢 资料…

二叉树的后序遍历-java递归+非递归-力扣145双百方案

一、题目描述给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。示例 1:输入:root [1,null,2,3]输出:[3,2,1]示例 2:输入:root []输出:[]示例 3:输入:root [1]…

使用jenkins实现自动化部署springboot应用

1. 前置准备 这里代码仓库使用gitlab。在介绍如何通过gitlab和jenkins进行自动化部署之前,需要先安装完成gitlab以及jenkins。两种程序的安装方式以及相关配置可以参看以下内容: linux中安装gitlab:linux安装极狐gitlab linux中安装jenki…

Objective-C description 自定义对象的打印格式/输出的字符串 类似于Java 中的 toString 方法

总目录 iOS开发笔记目录 从一无所知到入门 文章目录IntroNSObject 源码测试类截图测试代码输出Intro 在 Java 中,对于自定义类一般会重写集成自Object类的toString方法,这样在打印该类的对象时,打印出的字符串就是我们在 toString() 方法中返…

【Vue3源码】第六章 computed的实现

【Vue3源码】第六章 computed的实现 上一章节我们实现了 ref 及其它配套的isRef、unRef 和 proxyRefs API。这一章开始实现computed计算属性。 认识computed 接受一个 getter 函数,返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。…

[架构之路-121]-《软考-系统架构设计师》-计算机体系结构 -3-汇编语言与ARM系统的初始化

第9章 计算机体系结构 第1-6节 参考前文第7节 ARM汇编语言7.1 程序框架(1)数据段Data初始化的数据: 初始的全局变量未初始化的数据:未初始化的全局变量堆heap:malloc的内存或数据栈stack:函数的局部变量&am…

ubuntu20系统+RobotiQ 2F-85夹爪+Ros+VMware配置

文章目录环境说明Ros配置Vmware虚拟机串口通信配置运行节点并调试有关问题解决办法rosdep相关缺少ros有关的库与pymodbus相关参考环境说明 环境说明系统版本Ubuntu 20.04.4Ros版本noetic主机形式VMware虚拟机夹爪型号RobotiQ 2F-85 Ros配置 新建ros工作空间并进行初始化 mkdir…

Nginx配置web服务器及部署反向代理

Nginx配置web服务器及部署反向代理配置web服务器location语法部署反向代理代理转发配置web服务器 项目部署到linux上的静态文件代理给Nginx处理。当访问服务器IP时,可以自动返回静态文件主页。 主配置文件中server块对应的次配置include /etc/nginx/conf.d/*.conf…

ESP-01S烧录MQTT固件连接阿里云

烧录MQTT固件 资源下载包 用到的所有烧录攻击和固件都放百度云链接了 提取码:qwlo 烧录固件 淘宝上10块钱左右一个CH340C下载烧录器ESP8266的就可以了。 连接好硬件打开ESPFlashDownloadTool_v3.6.2.2.exe软件(记得放到英文目录下不然可能打不开&a…

windows服务编程

文章目录前言方案一:服务程序方案二:后台程序对比windows服务编程windows服务控制附录 - 完整代码前言 在linux中,如果需要一个程序在后台持续提供服务,我们一般会使用守护进程。 守护进程(daemon)是生存期长的一种进程。它们常…

Canonical为所有支持的Ubuntu LTS系统发布了新的Linux内核更新

导读Canonical近日为所有支持的Ubuntu LTS系统发布了新的Linux内核更新,以解决总共19个安全漏洞。新的Ubuntu内核更新仅适用于长期支持的Ubuntu系统,包括Ubuntu 22.04 LTS(Jammy Jellyfish)、Ubuntu 20.04 LTS(Focal F…

需求:节目上传至MINIO后,使用mqtt进行上报

需求:节目上传至MINIO后,使用mqtt进行上报 环境准备 文件管理平台:首先需要使用minio搭建属于自己的对象存储(此步骤跳过) 通信方式:MQTT方式,客户端测试工具:MQTTX(ht…