本文主要是介绍MATLAB环境下基于K-SVD的一维时间序列信号瞬态特征提取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
当旋转机械某一零部件发生故障时,其振动信号中就会产生周期性循环冲击响应—瞬态成分,这些瞬态成分往往包含着重要的故障信息。因此,利用合适的方法对振动信号中因局部故障引起的瞬态冲击响应成分进行提取是一种较为有效的旋转机械零部件故障诊断方法。然而在实际的振动信号中,往往包含着较多的工频振动、谐波振动以及背景噪声成分,要提取湮没在众多干扰成分中的瞬态特征成分,历来是旋转机械故障诊断领域的一大难点。
根据稀疏表示理论,考虑到在恒定转速工况下,因齿轮或轴承局部故障导致振动信号中产生的的瞬态成分具有循环往复的特征,这些具有重要故障信息的故障特征瞬态成分可在某些特定的字典上稀疏表示;而噪声成分对该字典不敏感,即噪声成分不能够在该特定的字典上稀疏表示。因此,对含有噪声背景的旋转机械零部件局部故障振动信号可以通过信号稀疏分解的方法提取故障特征。
鉴于此,提出一种基于K-SVD的一维时间序列信号瞬态特征提取方法,该程序利用K-SVD算法对一维时间序列信号进行瞬态特征提取,并给出几个例子,分别为模拟信号,轴承故障振动信号,发动机气门正常振动信号,发动机进气门故障振动信号的例子,发动机排气门故障振动信号,部分代码如下:
% 加载发动机排气门故障振动信号
load 3.txt
s =X3(1:N);
ss=s;
subplot(211)
plot1(t,s,1,1); %画出原信号时域图
title('原始信号')
xlim([0 max(t)])
subplot(212)
EnvelSpec(ss,fs,200);
xlabel('\fontsize{15}\fontname{Times New Roman}\itf\rm\bf / \rmHz');
ylabel('\fontsize{15}\fontname{Times New Roman}\it A');
set(gca,'fontsize',15);
xlim([0 1000])
title('包络谱')
部分出图如下:
完整代码可通过知乎学术咨询获得:
MATLAB环境下基于K-SVD的一维时间序列信号瞬态特征提取
工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任《中国电机工程学报》优秀审稿专家,《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》,《宇航学报》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
这篇关于MATLAB环境下基于K-SVD的一维时间序列信号瞬态特征提取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!