Python环境下一种改进的基于梯度下降的自适应短时傅里叶变换

在数字信号处理技术中,傅里叶变换及其逆变换是一种信号时频分析方法。该方法将信号的时域描述及频域描述联系在一起,时域信号可通过正变换转变为频域信号,频域信号可通过逆变换转变为时域信号进行分析。但傅里叶变换及其逆变换是一种信号的整体变换,要么完全在时域内进行分析处理,要么完全在频域内进行分析处理,无法得到信号频谱含量随时间的变化规律,即传统傅里叶变换及其逆变换存在不适用于非平稳信号、没有局限性及时域与频域分割的缺陷。要克服上述缺陷,就需要寻找联合时频方法。

1946年,GaborD.提出了短时傅里叶变换,该变换可将信号的时域分析和频域分析结合起来,其变换结果既反映了信号的频率内容,又反映了频率内容随时间变化的规律。短时傅里叶变换的过程为:用一个时宽足够窄的窗函数与时间信号相乘,窗内的信号近似视为平稳信号,然后在窗内进行傅里叶变换,得到信号的瞬时频谱。随着截取窗在时间轴上移动,得到整个时间域上的频谱。

短时傅里叶变换是一种线性的联合时频分析方法,其采用固定的窗函数对信号进行加窗处理,该变换克服了传统傅里叶变换的缺陷,同时易于实现。与傅里叶分析不同,短时傅里叶变换中的窗函数种类繁多,为将短时傅里叶变换的效果最优化,窗函数的选取显得尤为重要。实际应用的基本窗函数,主要分为以下类型:应用幂次时间函数的幂窗、应用三角时间函数的三角函数窗及应用指数时间函数的指数窗。

短时傅里叶变换中,采用窗函数对信号进行截取会造成频谱泄露,即某一频率的信号能量扩散到其相邻频率点。频谱泄漏与窗函数频谱的两侧旁瓣有关,从保持信号最大信息和消除旁瓣的综合效果出发,窗函数选取的基本原则为:(1)尽可能使窗函数频谱中的主瓣宽度足够窄,以获得较陡的过渡带,能量尽可能集中在主瓣内,提高频谱分析时的频率分辨率;(2)旁瓣高度尽量小且随频率尽快衰减,以提高阻带的衰减,减小频谱分析时的泄露失真。但主瓣既窄,旁瓣又小衰减又快的窗函数很难找到,所以需要根据信号的性质和研究目的来选取合适的窗函数。

为了自适应的对窗长进行调整,提出一种基于梯度下降的自适应短时傅里叶变换,主要贡献是窗口长度优化的新范例,包括修改STFT算子的定义,使窗长成为一个连续的参数,进而使得谱图可以被微分,运行环境为Python,采用Jupyter Notebook文件格式。部分模块如下:

from math import pi
import matplotlib.pyplot as plt
import numpy as np
import torch
import torchaudio

部分代码如下:

sr = 1e4
t = torch.arange(0, 2.5, 1/sr)
f = torch.sin(2*pi*t) * 1e2 + 1e2 * torch.ones_like(t) + 5e1 * t
x = (torch.sin(torch.cumsum(f, dim=0) / 2e2) + 0.1 *torch.randn(t.shape))[None, :]
x += torch.sin(torch.cumsum(1e2*5 * torch.ones_like(t), dim=0) / 2e2)
x = x.to(device)
print(x.shape)plt.plot(f)spec = torchaudio.transforms.Spectrogram(n_fft=1_000, win_length=1_000, hop_length=100)(x.cpu())
plt.imshow(spec[0].log().cpu(), aspect='auto', origin='lower', cmap='jet', extent=[0,spec.shape[-1], 0, spec.shape[-2]])
plt.ylabel('frequencies (Hz)', fontsize=18)
plt.xlabel('frames', fontsize=18)

出图如下:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。

擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

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

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

相关文章

PowerJob快速开始

PowerJob 简介 适用场景 ● 有定时执行需求的业务场景:如每天凌晨全量同步数据、生成业务报表、未支付订单超时取消等。 ● 有需要全部机器一同执行的业务场景:如使用广播执行模式清理集群日志。 ● 有需要分布式处理的业务场景:比如需要更新…

JAVA设计模式——创建型模式

JAVA设计模式——创建型模式 一、创建型模式1.单例模式(Singleton Pattern)1.1 饿汉式1.2 懒汉式1.3 双重检验锁(double check lock)(DCL)1.4 静态内部类1.5 枚举1.6 破坏单例的几种方式与解决方法1.6.1 反序列化1.6.2 反射 1.7 容器式单例1.8 ThreadLoc…

1950-2022年各省逐年平均降水量数据

1950-2022年各省逐年平均降水量数据 1、时间:1950-2022年 2、指标:省逐年平均降水量 3、范围:33省(不含澳门) 4、指标解释:逐年平均降水数据是指当年的日降水量的年平均值,不是累计值&#…

解决ODOO12 恢复数据库提示内存不够报错

1. 现象 点击 ‘restore database’ 控制台报错: 2. 解决措施 a. 进入启动脚本的文件夹 cd odoo/odoo-12.0/输入命令 ./odoo-bin --addons-pathaddons --databaseodoo --db_userodoo --db_passwordodoo --db_hostlocalhost --db_port5432 -i INITb. 刷新页面…

java实现图片转pdf,并通过流的方式进行下载(前后端分离)

首先需要导入相关依赖,由于具体依赖本人也不是记得很清楚了,所以简短的说一下。 iText:PDF 操作库,用于创建和操作 PDF 文件。可通过 Maven 或 Gradle 引入 iText 依赖。 MultipartFile:Spring 框架中处理文件上传的类…

css实现一行靠右,多行靠左

利用 inline-block 可以根据内容宽度变化的特性 如果内容多到折行了&#xff0c;那自身的宽度会和父级同宽&#xff0c;同宽后&#xff0c;产生折行&#xff0c;这时候就生效了… <!DOCTYPE html> <html lang"en"> <head><meta charset"U…

前端导出word文件的多种方式、前端导出excel文件

文章目录 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09;使用模板导出 前端通过模板字符串导出word文件前端导出 excel文件&#xff0c;node-xlsx导出文件&#xff0c;行列合并 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09; 先看效果&#xf…

1905_ARMv7-M的堆栈寄存器

1905_ARMv7-M的堆栈寄存器 全部学习汇总&#xff1a; g_arm_cores: ARM内核的学习笔记 (gitee.com) ARMv7-M实现了2种堆栈&#xff0c;分别是MSP和PSP。复位的时候默认是MSP&#xff0c;而当前是哪种可以通过CONTROL.SPSEL寄存器的bit来查看。 SP寄存器的最低2bit&#xff0c;S…

Unity(第二十二部)官方的反向动力学一般使用商城的IK插件,这个用的不多

反向动力学&#xff08;Inverse Kinematic&#xff0c;简称IK&#xff09;是一种通过子节点带动父节点运动的方法。 正向动力学 在骨骼动画中&#xff0c;大多数动画是通过将骨架中的关节角度旋转到预定值来生成的&#xff0c;子关节的位置根据父关节的旋转而改变&#xff0c;这…

STM32利用标准库建立第一个工程

首先就是要有一个固件库&#xff0c;里面有我们建立第一个工程所需的所有文件&#xff0c;在没有搞明白之前我一直很头痛&#xff0c;这么多的东西怎么搞&#xff0c;现在好了都弄清楚了&#xff0c;我把这个固件库放到了我的百度网盘里面了&#xff0c;现在分享给大家&#xf…

【STM32】江科大STM32学习笔记汇总(50)

00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【STM32】STM…

DDS数据分发服务——提升汽车领域数据传输效率

1.引言 随着智能化技术的快速发展&#xff0c;汽车行业正经历着一场革命性的变革。如今的分布式系统变得越来越复杂且庞大&#xff0c;对网络通信基数要求在功能和性能层面越来越高。数据分发服务&#xff08;DDS&#xff09;作为一项先进的数据传输解决方案&#xff0c;在汽车…

3D桌面端可视化引擎HOOPS Visualize助力工业制造开发AR/VR功能,实现质量控制与检验可视化!

近年来&#xff0c;工业制造领域正迎来一场数字化和智能化的革命。而增强现实&#xff08;AR&#xff09;和虚拟现实&#xff08;VR&#xff09;技术也在数字革命的浪潮中的有着重要推动力。这两种技术通过融合数字信息与真实或虚拟环境&#xff0c;为用户提供前所未有的交互体…

AIoT爆发在即,聆思科技“芯片+算法”深度耦合路线有何价值?

在日趋成熟的AI技术助力下&#xff0c;物联网&#xff08;IoT&#xff09;领域已开始显现爆发势能。 具体而言&#xff0c;IoT的经典架构包含了感知层、传输层、应用层等&#xff0c;涉及到对物理世界大量信息的收集和处理&#xff0c;过去受制于算法算力问题&#xff0c;难以…

Apache Echarts介绍与入门

介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;https://echarts.apache.org/zh/index.html 入门案例 Apache Echarts官方提供的快…

2024有哪些免费的mac苹果电脑深度清理工具?CleanMyMac X

苹果电脑用户们&#xff0c;你们是否经常感到你们的Mac变得不再像刚拆封时那样迅速、流畅&#xff1f;可能是时候对你的苹果电脑进行一次深度清理了。在这个时刻&#xff0c;拥有一些高效的深度清理工具就显得尤为重要。今天&#xff0c;我将介绍几款优秀的苹果电脑深度清理工具…

锚索测力计数据处理与分析:MCU自动测量单元的应用

锚索测力计作为一种重要的工程监测工具&#xff0c;在桥梁、大坝、隧道等结构物的健康监测中发挥着日益重要的作用。如何高效、准确地处理和分析&#xff0c;锚索测力计所获取的数据成为了工程师们面临的重要问题。近年来&#xff0c;随着微控制器(MCU)技术的快速发展&#xff…

安装ProxySQL,教程及安装链接(网盘自提)

一、网盘下载&#xff0c;本地直传 我网盘分享的是proxysql-2.5.5-1-centos8.x86_64.rpm&#xff0c;yum或者dnf直接安装就行 提取码&#xff1a;rhelhttps://pan.baidu.com/s/1nmx8-h8JEhrxQE3jsB7YQw 官方安装地址 官网下载地址https://repo.proxysql.com/ProxySQL/ 二、…

02、MongoDB -- MongoDB 的安全配置(创建用户、设置用户权限、启动安全控制、操作数据库命令演示、mongodb 的帮助系统介绍)

目录 MongoDB 的安全配置启动 mongodb 服务器 和 客户端 &#xff1a;1、启动单机模式的 mongodb 服务器2、启动 mongodb 的客户端 MongoDB 的安全配置启动演示用到的 mongodb 服务器 和 客户端启动单机模式的 mongodb 服务器&#xff1a;启动 mongodb 的客户端 MongoDB 操作数…

EasyRecovery数据恢复软件2024最新版包括Windows和Mac

EasyRecovery数据恢复软件适用于多种环境和使用场景。首先&#xff0c;它适用于各种操作系统&#xff0c;包括Windows和Mac。无论用户使用的是哪种操作系统&#xff0c;都可以使用该软件进行数据恢复。 其次&#xff0c;EasyRecovery支持从各种存储设备和媒介中恢复数据&#…