一维时间序列突变检测方法(小波等,MATLAB R2021B)

信号的突变点检测问题是指在生产实践中,反映各种系统工作状态的信号,可能因为受到不同类型的噪声或外界干扰而发生了信号突变,导致严重失真的信号出现,因此必须探测突变出现的起点和终点。研究目的在于设计出检测方案,可以最快地检测出系统中信号非正常变化的时刻,作出后续处理,以减小损失。目前在国内,信号的突变点检测课题在滚动轴承、水利水电、智能空间行为识别等许多工程实践和科学研究领域已得到广泛研究。

自上世纪经典DSP方法提出并被逐渐成熟地应用以来,信号的突变点检测问题一直是一个较热的研究课题。对于信号突变点检测问题,目前已经提出了许多有效的经典DSP方法,例如经典的基于信号能量的检测法,然而其易于受噪声干扰且需要延迟一段时间以计算能量,因此发展了不少改进方法,比如基于累积和CUSUM的方式因具有良好的性能而得到广泛应用。CUSUM具有递归形式能够进行实时更新操作,计算效率比较高。虽然最初提出CUSUM来处理单个数据流,但是目前基于CUSUM的检测算法大多利用了来自多个传感器的信息。CUSUM通常需要信号突变前和突变后的统计信息作为检测的前提,在某些情形下,信号发生突变后的分布模型的统计信息是可以获得的,但在更一般场景中,由于突变原因多样且往往未知,变更后的模型发生了根本改变,突变后的统计信息是无法获得或预知的。又有科研人员提出了突变信息快速检测方法,快速检测方法旨在仅仅利用少量突变后的数据来进行训练,以得到信号突变后的模型,以此来最大程度地减少检测延迟。放眼许多应用场景,信号突变以后的分布模型可能来自一组潜在的可能模型,换句话说,变更后模型有多种假设。例如,检测风机轴承故障时,引起该故障的原因故障可能是外圈故障或内圈故障、滚子缺陷或和保存架故障等。在快速检测方法中,贝叶斯方法的效果比较好,本质上该方法就是提出了信号突变后的几种备选模型,然后通过算法来估计出最优的突变后的信号分布情况,进行进一步处理,从一定意义上放宽了很多场景中对突变后信号信息的依赖,但依然是治标不治本。

鉴于此,采用小波分析等方法对一维时间序列进行突变检测,运行环境为MATLAB R2021B。

Matlab 复制代码
function residue = cpnochange(x, statistic)
% compute total residual error in the absence of changes
n = size(x,2);
if n==0
  residue = NaN;
elseif strcmp(statistic,'mean')
  residue = n*sum(var(x,1,2));
elseif strcmp(statistic,'rms')
  residue = sum(n*log(sum(x.^2,2)/n));
elseif strcmp(statistic,'std')
  residue = sum(n*log(var(x,1,2)));
elseif strcmp(statistic,'linear')
  residue = sum(n*var(x,1,2) - sum((x-mean(x,2)).*((1:n)-mean(1:n)),2).^2 / (n*var(1:n,1)));
完整代码可通过知乎学术咨询获得:https://www.zhihu.com/consult/people/792359672131756032?isMe=1
end

工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

相关推荐
看到我,请让我去学习28 分钟前
Qt— 布局综合项目(Splitter,Stacked,Dock)
开发语言·qt
GUET_一路向前41 分钟前
【C语言防御性编程】if条件常量在前,变量在后
c语言·开发语言·if-else·防御性编程
曳渔42 分钟前
UDP/TCP套接字编程简单实战指南
java·开发语言·网络·网络协议·tcp/ip·udp
楼田莉子1 小时前
C++算法题目分享:二叉搜索树相关的习题
数据结构·c++·学习·算法·leetcode·面试
三千道应用题1 小时前
WPF&C#超市管理系统(6)订单详情、顾客注册、商品销售排行查询和库存提示、LiveChat报表
开发语言·c#·wpf
大千AI助手1 小时前
SWE-bench:真实世界软件工程任务的“试金石”
人工智能·深度学习·大模型·llm·软件工程·代码生成·swe-bench
hqxstudying1 小时前
JAVA项目中邮件发送功能
java·开发语言·python·邮件
咪咪渝粮1 小时前
JavaScript 中constructor 属性的指向异常问题
开发语言·javascript
最初的↘那颗心1 小时前
Java HashMap深度解析:原理、实现与最佳实践
java·开发语言·面试·hashmap·八股文