如何对时间序列进行小波分析,得出其周期?

news2024/7/6 19:33:05

从信号处理角度进行分析 简单的时间序列直接做各种谱分析(频谱,包络谱,平方包络谱,功率谱,倒谱等等) 比如一些简单的旋转机械振动时间序列信号

​如果频谱不好分析,那可以分析如下图所示的时间序列的时频谱

​给个简单的模拟信号的例子 t = 0:1/2000:1-1/2000; dt = 1/2000; x1 = sin(50*pi*t).*exp(-50*pi*(t-0.2).^2); x2 = sin(50*pi*t).*exp(-100*pi*(t-0.5).^2); x3 = 2*cos(140*pi*t).*exp(-50*pi*(t-0.2).^2); x4 = 2*sin(140*pi*t).*exp(-80*pi*(t-0.8).^2); x = x1+x2+x3+x4; figure; plot(t,x) title('Superimposed Signal')

​其连续小波变换时频谱如下

​一个模拟的轴承内圈故障振动信号,带有明显的周期性

​相应的频谱如下,红色虚线代表故障特征频率及相应的倍频

包络谱如下

​看一下相应的CWT时频谱,很明显能看出冲击性

​还可以试试小波相干与交叉小波分析 小波相干、交叉小波,可以很好地反映两个不同时间序列变化之间的“相关性”。小波相干分析,一般反映序列间周期性“变化趋势”的一致性,但不直接反映变化周期的强度关系;交叉小波分析,一般反映序列间“共有周期”的强度。

此外,如果时频谱线能量发散,时频脊线模糊,还可以试试同步压缩之类的算法 时间序列信号处理系列-基于Python的同步压缩变换 - 哥廷根数学学派的文章 - 知乎 时间序列信号处理系列-基于Python的同步压缩变换 - 知乎 当时间序列信号中噪声较大时,为了有利于周期性分析,不可避免地要进行降噪前处理 比如K-SVD降噪

样条框架降噪

Morlet小波降噪

当待分析的时间序列过于复杂时,那可能要引入模态分解(多分辨分析),比如小波分解,经验模态分解及其变体,变分模态分解,经验小波变换,局部均值分解,辛几何模态分解,各种各样的自适应分解算法 基于小波脊线的时间序列分解

好多同学都对各种模态分解方法的时间序列处理感兴趣,那就随便说一下 实际上,时间序列通常由多个具有物理意义的分量组成,在很多时候,为了更容易的研究信号,我们希望在与原始数据相同的时间尺度上单独研究这些分量中的一个或多个,理想情况下,我们希望这些经MRA分解到的多个分量在物理上是有意义的,可容易解释的。多分辨率分析MRA通常与小波或小波包相关联,但诸如经验模态分解EMD,变分模态分解VMD等模态分解方法也可以构成MRA。 先给一个简单的合成信号,信号以1000Hz的频率采样1秒钟。 Fs = 1e3; t = 0:1/Fs:1-1/Fs; comp1 = cos(2*pi*200*t).*(t>0.7); comp2 = cos(2*pi*60*t).*(t>=0.1 & t<0.3); trend = sin(2*pi*1/2*t); rng default wgnNoise = 0.4*randn(size(t)); x = comp1+comp2+trend+wgnNoise; plot(t,x) xlabel('Seconds') ylabel('Amplitude') title('Synthetic Signal')

该信号由3个主要分量组成:频率为 60Hz的时间局部振荡分量、频率为 200 Hz的时间局部振荡分量和趋势项分量。趋势项分量为正弦曲线,频率为0.5Hz。60Hz的振荡分量发生在 0.1到 0.3 秒之间,而 200Hz的振荡分量发生在 0.7 到 1 秒之间。 但这些分量从时域波形中无法分辨,因此进行频域变换。 xdft = fft(x); N = numel(x); xdft = xdft(1:numel(xdft)/2+1); freq = 0:Fs/N:Fs/2; plot(freq,20*log10(abs(xdft))) xlabel('Cycles/second') ylabel('dB') grid on

从频率中可以更容易地辨别振荡分量的频率,但时间局部性信号却丢失。为了同时定位时间和频率信息,使用连续小波变换进行分析。

从CWT时频谱图中可以看出60Hz和200Hz分量的时间范围,但没有发现趋势项分量。为了分离出信号的分量并单独进行分析,接下来使用多分辨分析,直接在时域中进行相关操作。 多分辨分析通过将信号分成不同分辨率的分量进而缩小分析范围,而提取不同分辨率的信号分量相当于分解数据在不同时间尺度上的变化,或等效地在不同频带上进行分析。首先,采用离散小波变换的变体最大重叠离散小波变换对信号进行多分辨分析,分解层数为8。关于最大重叠离散小波变换的相关内容,请查看如下文献。

最大重叠离散小波变换的8层多分辨分析分解如下:

如果从上向下看,会看到所分解的分量变得越来越平滑,即分量频率越来越低。回想一下,原始信号包含3个主要分量,一个 200 Hz 的高频振荡成分、一个 60 Hz 的低频振荡成分和一个趋势成分,它们都被加性噪声破坏了。 从D2 图中可以看出时间局部化的高频分量被分解出来,而下面的两个图包含较低频率的振荡分量,这是多分辨率分析的一个重要方面,最后S8子图中包含了趋势项分量。 除了小波多分辨分析,经验模态分解 (EMD) 是一种所谓的数据自适应多分辨技术。 EMD 在不使用固定基函数的情况下递归地从数据中提取不同的分辨率成分,关于EMD相关文献浩如烟海,不做赘述了。EMD的多分辨分析分解如下所示:

​虽然MRA分解分量的数目不同,但 EMD MRA和小波 MRA会产生相似的信号波形,在 EMD MRA分解中,高频振荡成分位于第1个本征模态函数中 (IMF1),低频振荡成分主要位于IMF2和IMF3中,IMF6 中的趋势项分量与小波技术提取的趋势分量非常相似。 自适应多分辨分析的另一种技术是变分模态分解 (VMD),VMD 从信号中提取固有模式函数或振荡模式,并不使用固定基函数进行分析。EMD在时域上递归,以逐步提取低频IMF分量,而VMD 首先识别频域中的信号峰值并同时提取所有模式,相关文献如下: Dragomiretskiy, Konstantin, and Dominique Zosso. “Variational Mode Decomposition.” IEEE Transactions on Signal Processing 62, no. 3 (February 2014): 531–44. https://doi.org/10.1109/TSP.2013.2288675. VMD的多分辨分析分解如下所示:

​由上图可知,与小波和EMD类似,VMD将3个分量基本分离了出来。 还有一种数据自适应多分辨分析技术:经验小波变换 (EWT) ,EWT根据分析信号的频率构造 Meye小波进而进行自适应小波,之前写过EWT相关的内容: 经验小波变换在信号处理及轴承故障诊断中的应用 - 哥廷根数学学派的文章 - 知乎https://zhuanlan.zhihu.com/p/53 EWT的多分辨分析分解如下所示:

​与之前的EMD和小波MRA类似,EWT分解出了相关的振荡分量,用于执行分析的滤波器及其通带信息如下:

下面考虑一段神户地震信号,源于1995 年 1 月 16 日在澳大利亚霍巴特的塔斯马尼亚大学记录,从 20:56:51 (GMT) 开始,以 1 秒的间隔持续 51分钟。 figure plot(T,kobe) title('Kobe Earthquake Seismograph') ylabel('Vertical Acceleration (nm/s^2)') xlabel('Time') axis tight grid on

以最大重叠离散小波变换为例,其8层MRA分解如下:

​从D4和D5子图中可以看出初级与延迟次级波分量,地震波中的分量以不同的速度传播,初级波比次级(剪切)波传播的更快。 将信号分解为若干分量的目的通常是去除某些分量以减轻对信号分析的影响,MRA技术的关键是重建原始信号的能力,如下:

​每种方法的最大重建误差约为10^(-12) 或更小,表明它们可以完美地对信号进行重建。在很多研究中我们对趋势项不感兴趣,由于趋势项一般位于最后一个 MRA 分解分量中,因此只需将该分量去除,然后进行重建。

​此外,再删除第1个MRA分解分量(看起来主要是噪声)

​在前面我们将趋势项删除,然而在许多应用中,趋势项可能是我们的主要研究部分,因此可视化几种MRA方法所提取的趋势项分量。

根据以上的分析,小波MRA技术可以更平滑且最准确地提取趋势项,EMD提取了一个平滑的趋势项,但它相对于真实趋势幅度发生了偏移,而 VMD似乎比小波和EMD更偏向于提取振荡分量。 在前面的示例中,强调了多分辨分析在检测数据中的振荡分量和总体趋势中的作用,然而MRA还可以定位和检测信号中的瞬态成分。为了说明这一点,以1947年第一季度至 2011 年第四季度美国实际国内生产总值 (GDP) 数据,垂直的黑线标志着“大缓和”的开始,标志着从 1980 年代中期开始,美国宏观经济波动性减弱的时期,很难从原始数据中辨别出来。

​部分代码链接见评论区,面包多下载,内容包括现代信号处理,机器学习,深度学习,故障诊断等

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

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

相关文章

FL Studio21最新版数字音频工作站(DAW)

FL Studio21首先提供了音符编辑器&#xff0c;编辑器可以针对音乐创作人的要求编辑出不同音律的节奏&#xff0c;例如鼓&#xff0c;镲&#xff0c;锣&#xff0c;钢琴&#xff0c;笛&#xff0c;大提琴&#xff0c;筝&#xff0c;扬琴等等任何乐器在音乐中的配乐。 水果音乐制…

【Linux C编程-高级篇】换行回车探讨printf行缓冲write函数掉电保护线程安全相关

换行回车探讨 \r : 回车&#xff0c;定位到本行开头\n : 换行&#xff0c;光标移到下一行\r\n : 将光标移动到下一行开头windows 下&#xff0c;每行结尾 \r\n类unix&#xff0c;每行结尾 \nMac系统&#xff0c;每行结尾\r \r\n&#xff0c;windows下好像改善了&#xff0c;使…

全文最详细的Apache的管理及优化Web(图文详解)

目录 前言 一、Apache的安装及启用 二、Apache的基本信息 三、Apache的基本配置及修改 1、默认发布文件 2、Apache端口修改 3、默认发布目录 三、Apache的访问控制 1、基于客户端ip的访问控制 2、基于用户认证 四、Apache的虚拟主机 五、Apache的语言支持 六…

React--》超详细教程——React脚手架的搭建与使用

目录 React脚手架的创建 全局安装创建 npx安装创建(官方推荐) 指定React版本安装 脚手架文件介绍 React脚手架是开发现代Web应用的必备&#xff0c;其充分利用Webpack、Babel、ESlint等工具辅助项目的开发&#xff0c;当然这些工具也无需手动配置即可使用&#xff0c;脚手…

Java 在云原生中的内存问题

Java 凭借着自身活跃的开源社区和完善的生态优势&#xff0c;在过去的二十几年一直是最受欢迎的编程语言之一。步入云原生时代&#xff0c;蓬勃发展的云原生技术释放云计算红利&#xff0c;推动业务进行云原生化改造&#xff0c;加速企业数字化转型。 然而 Java 的云原生转型之…

Word目录自动生成,不使用word默认样式的,且指定从某页开始为第一页

文章目录一&#xff0c; 设置正文页为第1页&#xff1a;二&#xff0c;自动生成目录。拓展&#xff1a;需求&#xff1a;文章或者论文往往会先写好标题&#xff0c;摘要&#xff0c;写好内容。最后需要生成目录。但是这样布局后&#xff0c;生成的目录的起始页码不是从第1 页开…

ChatGPT通俗笔记:从GPT-N、RL之PPO算法到instructGPT、ChatGPT

前言 自从我那篇BERT通俗笔记一经发布&#xff0c;然后就不断改、不断找人寻求反馈、不断改&#xff0c;其中一位朋友倪老师(之前我司NLP高级班学员现课程助教老师之一)在谬赞BERT笔记无懈可击的同时&#xff0c;给我建议到&#xff0c;“后面估计可以尝试尝试在BERT的基础上&…

搭建OpenCV环境和Jupyter Notebook

使用Anaconda搭建python和OpenCV环境安装Anaconda&#xff0c;全程下一步&#xff0c;修改了一下默认安装路径&#xff0c;修改为D:\Program Files\Anaconda3同时设置了环境变量&#xff0c;将三个文件夹路径都加到了系统环境变量&#xff0c;path中。打开【开始】菜单&#xf…

MatrixVT:Efficient Multi-Camera to BEV Transformation for 3D Perception——论文笔记

参考代码&#xff1a;BEVDepth 1. 概述 介绍&#xff1a;这篇文章对LSS方法中的瓶颈项进行分析&#xff0c;分别指出其中显存占用问题源自于“lift”操作生成的高维度特征&#xff0c;运行耗时是由于“splat”操作的求和操作&#xff0c;对此文章从矩阵变换的角度对原版的LSS方…

Java面向对象复习

文章目录一、类和对象1. 面向对象2. 类的定义3. 对象的创建4. 类在内存中的存储5.类的成员使用6. toString()方法7. static 关键字静态成员变量静态成员方法二、封装1. 构造方法概念基本使用构造方法的重载this关键字2. private3. 封装的好处三、继承1. 继承的概念2. extends3.…

二维矩阵的元素和

二维矩阵的元素和1.背景2.原理3.实现1.背景 对矩阵元素进行求和&#xff0c;或者求子矩阵的元素和&#xff1b;给定矩阵左上角坐标&#xff08;x1,y1&#xff09;和右下角坐标&#xff08;x2,y2&#xff09;; 如何快速求出 以&#xff08;x1,y1&#xff09;&#xff0c;&#…

SAP入门技术分享五:内表

内表1. 概要2. 内表与表头3.内表的类型&#xff08;1&#xff09;类型&#xff08;2&#xff09;标准表&#xff08;3&#xff09;排序表&#xff08;4&#xff09;哈希表4.比较内表速度&#xff08;1&#xff09;标准表与排序表&#xff08;2&#xff09;二分法查找&#xff0…

Kafka生产者分区

生产者分区 分区的原因 (1&#xff09;便于合理使用存储资源&#xff0c;每个Patition在一个Broker上存储&#xff0c;可以把海量的数据按照分区切割成一块一块数据存储在多台Broker上。合理控制分区的任务&#xff0c;可以实现负载均衡的效果。 (2&#xff09;提高并行度&am…

如何设计一个消息队列?

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

用户登录、注册的简单案例: html+css+MyBatis+Servlet

用户登录一. 用户登录1. 流程与思路基本流程&#xff1a;详细过程&#xff1a;2. 准备环境建库建表Pojo实体类User&#xff1a;Maven坐标&#xff1a;mybatis核心配置文件&#xff1a;代理接口&#xff1a;3. 编写目录&#xff1a;HTML&#xff1a;Serlvet&#xff1a;4. 效果二…

【Leetcode】21. 合并两个有序链表

【Leetcode】21. 合并两个有序链表题目思路代码题目 思路 归并排序比较两个单链表每一个节点&#xff0c;将较小元素的节点值封装成一个新的节点添加到一个新的链表中如果两个单链表长度不一致&#xff0c;也就是有一个链表指针指向null ,那么将另一个链表中的所有节点全部添加…

【手写 Vue2.x 源码】第二十四篇 - 异步更新流程

一&#xff0c;前言 上篇&#xff0c;介绍了 Vue依赖收集的视图更新部分&#xff0c;主要涉及以下几点&#xff1a; 视图初始化时&#xff1a; render方法中会进行取值操作&#xff0c;进入 Object.defineProperty 的 get 方法get 方法中为数据添加 dep&#xff0c;并记录当…

20230115英语学习

Gold From Old Sim Cards Could Help Make Future Drugs SIM卡中回收的黄金&#xff0c;可用于制造药品 Chemists are paving a road to recycle discarded SIM cards, not for electronics, but for medicine. SIM cards, which allow your phone to connect to your netwo…

ATTCK 05

环境搭建 自行下载安装包 解压VMware中win7 win8 同样方法所要用到的攻击机为kali 调节kali的网络适配器为vmnet8 调节win7的网络适配器 增加vmnet5用来连接内网win8 vmnet5名称ip角色kali192.168.115.129攻击机win7192.168.115.150192.168.138.136win8192.168.138.138DC拓…

【 java 反射上篇】java反射机制不难吧?来看看这篇

&#x1f4cb; 个人简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是阿牛&#xff0c;全栈领域优质创作者。&#x1f61c;&#x1f4dd; 个人主页&#xff1a;馆主阿牛&#x1f525;&#x1f389; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4d…