时序信号的时域、频域、时-频域特征提取

这篇具有很好参考价值的文章主要介绍了时序信号的时域、频域、时-频域特征提取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在面对工业中的传感器采集到的高维的信号,如振动信号,通常需要对数据进行统计特征提取,以进行降维。对于这类时序信号,常用的有时域、频域和时-频域特征提取方法。本次对这三个方面的特征提取代码进行一下总结,并以IEEE PHM 2012 挑战赛的轴承数据集中的Bearing 1_1 的数据进行示例。

Bearing 1_1的数据维度为(2803, 2560),即共有2803个样本,每个样本数据的信号长度为2560,具体的数据介绍资料比较多,可以自行百度或看直接看官方的数据介绍。
对时序信号进行分类 可以提取哪些特征,故障诊断与寿命预测,人工智能

时域特征提取

时域统计特征可分为有量纲统计量和无量纲统计量,有量纲统计量的数值大小会因外界一些物理量的变化而变化,而无量纲统计量不易受外界因素的干扰影响,且通常对早期的微弱故障敏感。

常用的时域统计特征如下:

特征 公式 特征 公式
最大值 F 1 = max ⁡ ( X ( i ) ) F_1=\max \left( X\left( i \right) \right) F1=max(X(i)) 标准差 F 9 = ∑ i = 1 N ( X ( i ) − F 4 ) 2 N − 1 F_9=\sqrt{\frac{\sum\nolimits_{i=1}^N{\left( X\left( i \right) -F_4 \right) ^2}}{N-1}} F9=N1i=1N(X(i)F4)2
最大绝对值 F 2 = max ⁡ ( ∣ X ( i ) ∣ ) F_2=\max \left( \lvert X\left( i \right) \rvert \right) F2=max(X(i)) 峭度 F 10 = ∑ i = 1 N ( X ( i ) − F 4 ) 4 ( N − 1 ) F 9 4 F_{10}=\frac{\sum\nolimits_{i=1}^N{\left( X\left( i \right) -F_4 \right) ^4}}{\left( N-1 \right) {F_9}^4} F10=(N1)F94i=1N(X(i)F4)4
最小值 F 3 = min ⁡ ( X ( i ) ) F_3=\min \left( X\left( i \right) \right) F3=min(X(i)) 偏度 F 11 = ∑ i = 1 N ( X ( i ) − F 4 ) 3 ( N − 1 ) F 9 3 F_{11}=\frac{\sum\nolimits_{i=1}^N{\left( X\left( i \right) -F_4 \right) ^3}}{\left( N-1 \right) {F_9}^3} F11=(N1)F93i=1N(X(i)F4)3
均值 F 4 = 1 N ∑ i = 1 N X ( i ) F_4=\frac{1}{N}\sum\nolimits_{i=1}^N{X\left( i \right)} F4=N1i=1NX(i) 裕度指标 F 12 = F 2 F 8 F_{12}=\frac{F_2}{F_8} F12=F8F2
峰峰值 F 5 = F 1 − F 3 F_5=F_1-F_3 F5=F1F3 波形指标 F 13 = F 7 F 6 F_{13}=\frac{F_7}{F_6} F13=F6F7
绝对平均值 F 6 = 1 N ∑ i = 1 N ∣ X ( i ) ∣ F_6=\frac{1}{N}\sum\nolimits_{i=1}^N{ \lvert X \left( i \right) \rvert } F6=N1i=1NX(i) 脉冲指标 F 14 = F 2 F 6 F_{14}=\frac{F_2}{F_6} F14=F6F2
均方根值 F 7 = 1 N ∑ i = 1 N X ( i ) 2 F_7=\sqrt{\frac{1}{N}\sum\nolimits_{i=1}^N{X\left( i \right) ^2}} F7=N1i=1NX(i)2 峰值指标 F 15 = F 2 F 7 F_{15}=\frac{F_2}{F_7} F15=F7F2
方根幅值 F 8 = ( 1 N ∑ i = 1 N ∣ X ( i ) ∣ ) 2 F_8=(\frac{1}{N}\sum\nolimits_{i=1}^N{\sqrt{ \lvert X \left( i \right) \rvert}})^2 F8=(N1i=1NX(i) )2

在设备运行良好的状态下,最大值最大绝对值(也可以视为峰值)变化范围不大,基本上稳定在一个阈值以下,但一旦最大值最大绝对值异常变大,基本上可以认为设备健康状况出现了问题,大到一定程度一定是出现了某种故障隐患;

均值反映了在机械运转过程中,由于轴心位置的变化而产生的振动信号的变化;

均方根值,又称有效值反应了振动信号的能量强度和稳定性。工程人员通常最关心的通常就是这个指标,这个指标如果异常变大,则表示机械设备很有可能存在某种隐患;

峭度反应了振动信号的冲击特性,峭度对于冲击比较敏感,一般情况下峭度值应该在3左右,因为正态分布的峭度等于3,如果偏离3太多则说明机械设备存在一定的冲击性振动,可能存在某种故障隐患;

偏度反映了振动信号的非对称性,通常情况下振动信号是关于x轴对称的,这时候偏度应该趋近于0。如果设备某一个方向的摩擦或碰撞较大就会造成振动的不对称,使偏度变大。

裕度指标常用来检测机械设备的磨损状况;

脉冲指标峰值指标都是用来检测信号中有无冲击的指标。

import numpy as np
from scipy import stats


def get_time_domain_feature(data):
    """
    提取 15个 时域特征
    
    @param data: shape 为 (m, n) 的 2D array 数据,其中,m 为样本个数, n 为样本(信号)长度
    @return: shape 为 (m, 15)  的 2D array 数据,其中,m 为样本个数。即 每个样本的16个时域特征
    """
    rows, cols = data.shape
    
    # 有量纲统计量
    max_value = np.amax(data, axis=1)  # 最大值
    peak_value = np.amax(abs(data), axis=1)  # 最大绝对值
    min_value = np.amin(data, axis=1)  # 最小值
    mean = np.mean(data, axis=1)  # 均值
    p_p_value = max_value - min_value  # 峰峰值
    abs_mean = np.mean(abs(data), axis=1)  # 绝对平均值
    rms = np.sqrt(np.sum(data**2, axis=1) / cols)  # 均方根值
    square_root_amplitude = (np.sum(np.sqrt(abs(data)), axis=1) / cols) ** 2  # 方根幅值
    # variance = np.var(data, axis=1)  # 方差
    std = np.std(data, axis=1)  # 标准差
    kurtosis = stats.kurtosis(data, axis=1)  # 峭度
    skewness = stats.skew(data, axis=1)  # 偏度
    # mean_amplitude = np.sum(np.abs(data), axis=1) / cols  # 平均幅值 == 绝对平均值
    
    # 无量纲统计量
    clearance_factor = peak_value / square_root_amplitude  # 裕度指标
    shape_factor = rms / abs_mean  # 波形指标
    impulse_factor = peak_value  / abs_mean  # 脉冲指标
    crest_factor = peak_value / rms  # 峰值指标
    # kurtosis_factor = kurtosis / (rms**4)  # 峭度指标
    
    features = [max_value, peak_value, min_value, mean, p_p_value, abs_mean, rms, square_root_amplitude,
                std, kurtosis, skewness,clearance_factor, shape_factor, impulse_factor, crest_factor]
    
    return np.array(features).T

Bearing1_1的时域特征提取示例:
对时序信号进行分类 可以提取哪些特征,故障诊断与寿命预测,人工智能

频域特征提取

除了在时域进行特征分析外,我们通常还会再频域对信号进行分析。通过傅里叶变换将时域信号转变为频谱,即可在频域中对信号进行分析。

常用的频域特征有:

特征 公式 特征 公式
重心频率 F 1 = ∑ k = 1 K f k S ( k ) ∑ k = 1 K S ( k ) F_{1}=\frac{\sum\nolimits_{k=1}^K{f_kS\left( k \right)}}{\sum\nolimits_{k=1}^K{S\left( k \right)}} F1=k=1KS(k)k=1KfkS(k) 频率均方根 F 3 = ∑ k = 1 K f k 2 S ( k ) ∑ k = 1 K S ( k ) F_{3}=\sqrt{\frac{\sum\nolimits_{k=1}^K{{f_k}^2S\left( k \right)}}{\sum\nolimits_{k=1}^K{S\left( k \right)}}} F3=k=1KS(k)k=1Kfk2S(k)
平均频率 F 2 = ∑ k = 1 K S ( k ) K F_{2}=\frac{\sum\nolimits_{k=1}^K{S\left( k \right)}}{K} F2=Kk=1KS(k) 频率方差 F 4 = ∑ k = 1 K ( f k − F 1 ) 2 S ( k ) ∑ k = 1 K S ( k ) F_{4}=\frac{\sum\nolimits_{k=1}^K{\left( f_k-F_{1} \right) ^2S\left( k \right)}}{\sum\nolimits_{k=1}^K{S\left( k \right)}} F4=k=1KS(k)k=1K(fkF1)2S(k)
import numpy as np


def get_frequency_domain_feature(data, sampling_frequency):
    """
    提取 4个 频域特征
    
    @param data: shape 为 (m, n) 的 2D array 数据,其中,m 为样本个数, n 为样本(信号)长度
    @param sampling_frequency: 采样频率
    @return: shape 为 (m, 4)  的 2D array 数据,其中,m 为样本个数。即 每个样本的4个频域特征
    """
    data_fft = np.fft.fft(data, axis=1)
    m, N = data_fft.shape  # 样本个数 和 信号长度
    
    # 傅里叶变换是对称的,只需取前半部分数据,否则由于 频率序列 是 正负对称的,会导致计算 重心频率求和 等时正负抵消
    mag = np.abs(data_fft)[: , : N // 2]  # 信号幅值
    freq = np.fft.fftfreq(N, 1 / sampling_frequency)[: N // 2]
    # mag = np.abs(data_fft)[: , N // 2: ]  # 信号幅值
    # freq = np.fft.fftfreq(N, 1 / sampling_frequency)[N // 2: ]
    
    ps = mag ** 2 / N  # 功率谱
    
    fc = np.sum(freq * ps, axis=1) / np.sum(ps, axis=1)  # 重心频率
    mf = np.mean(ps, axis=1)  # 平均频率
    rmsf = np.sqrt(np.sum(ps * np.square(freq), axis=1) / np.sum(ps, axis=1))  # 均方根频率
    
    freq_tile = np.tile(freq.reshape(1, -1), (m, 1))  # 复制 m 行
    fc_tile = np.tile(fc.reshape(-1, 1), (1, freq_tile.shape[1]))  # 复制 列,与 freq_tile 的列数对应
    vf = np.sum(np.square(freq_tile - fc_tile) * ps, axis=1) / np.sum(ps, axis=1)  # 频率方差
    
    features = [fc, mf, rmsf, vf]
    
    return np.array(features).T

Bearing1_1的频域特征提取示例:
对时序信号进行分类 可以提取哪些特征,故障诊断与寿命预测,人工智能

时-频域特征提取

为了全面的分析信号,除了单一的在时域、频域进行信号分析,我们还会综合在时-频域进行信号分析。常用的时-频域信号分析有小波包分析和EMD信号分析等,这里主要使用小波包信号分析。

在小波包的信号分析中,我们通常会以 最后一层 子频带 的 能量百分比 作为所提取到时-频域特征。

import pywt
import numpy as np


def get_wavelet_packet_feature(data, wavelet='db3', mode='symmetric', maxlevel=3):
    """
    提取 小波包特征
    
    @param data: shape 为 (n, ) 的 1D array 数据,其中,n 为样本(信号)长度
    @return: 最后一层 子频带 的 能量百分比
    """
    wp = pywt.WaveletPacket(data, wavelet=wavelet, mode=mode, maxlevel=maxlevel)
    
    nodes = [node.path for node in wp.get_level(maxlevel, 'natural')]  # 获得最后一层的节点路径
    
    e_i_list = []  # 节点能量
    for node in nodes:
        e_i = np.linalg.norm(wp[node].data, ord=None) ** 2  # 求 2范数,再开平方,得到 频段的能量(能量=信号的平方和)
        e_i_list.append(e_i)
    
    # 以 频段 能量 作为特征向量
    # features = e_i_list
        
    # 以 能量百分比 作为特征向量,能量值有时算出来会比较大,因而通过计算能量百分比将其进行缩放至 0~100 之间
    e_total = np.sum(e_i_list)  # 总能量
    features = []
    for e_i in e_i_list:
        features.append(e_i / e_total * 100)  # 能量百分比
    
    return np.array(features)

Bearing1_1的时-频域特征提取示例:

在进行小波包变换时,由于pywt.WaveletPacket函数只能接收一维数据,因此不能直接将二维矩阵传入函数,需要通过循环处理:

# 按照上诉的示例,假设需要处理的数据变量名为 data,其维度为 (2803, 2560)
time_frequency_doamin_frequency = []

# 通过for循环每次提取一个样本的时-频域特征
for i in range(data.shape[0]):
 wavelet_packet_feature = get_wavelet_packet_feature(data[i])
 time_frequency_doamin_frequency.append(wavelet_packet_feature)

time_frequency_doamin_frequency = np.array(time_frequency_doamin_frequency)
time_frequency_doamin_frequency.shape  # (2803, 8)

对时序信号进行分类 可以提取哪些特征,故障诊断与寿命预测,人工智能

参考资料

[1]. 机械振动信号中的常用指标 (baidu.com)

[2]. 信号时域分析方法的理解(峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等) - 知乎 (zhihu.com)

[3]. FFT与频谱、功率谱、能量谱等 - SYAO

[4]. 频域特征指标及其MATLAB代码实现(重心频率、均方频率、均方根频率、频率方差、频率标准差) - 知乎 (zhihu.com)

[5]. 雷亚国. 旋转机械智能故障诊断与剩余寿命预测[M]. 西安: 西安交通大学出版社, 2017.文章来源地址https://www.toymoban.com/news/detail-822551.html

到了这里,关于时序信号的时域、频域、时-频域特征提取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【使用深度学习的城市声音分类】使用从提取音频特征(频谱图)中提取的深度学习进行声音分类研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 使用深

    2024年02月16日
    浏览(30)
  • 【老生谈算法】基于matlab时域频域处理的语音信号变声处理系统设计与算法原理(论文+程序源码+GUI图形用户界面)——变声算法

    大家好,今天给大家介绍基于matlab的语音信号变声处理系统设计与算法原理(论文+程序源码)。 运用matlab软件实现对声音的变声处理,利用离散付里叶变换进行频谱分析;设计数字滤波器组;通过时域和频域方法做出各种音效效果,实现变速(慢放、快放),变调(频谱左

    2024年02月04日
    浏览(46)
  • 【计算机视觉】图像分割与特征提取——频域增强(低通滤波&高通滤波)

    个人简介:  📦个人主页:赵四司机 🏆学习方向:JAVA后端开发  ⏰往期文章:SpringBoot项目整合微信支付 🔔博主推荐网站:牛客网 刷题|面试|找工作神器 📣种一棵树最好的时间是十年前,其次是现在! 💖喜欢的话麻烦点点关注喔,你们的支持是我的最大动力。 前言:

    2024年01月15日
    浏览(41)
  • 脑电信号特征提取方法与应用

    前言 脑电图(EEG)信号在理解与脑功能和脑相关疾病的电活动方面发挥着重要作用。典型的脑电信号分析流程如下:(1)数据采集;(2)数据预处理;(3)特征提取;(4)特征选择;(5)模型训练与分类;(6)性能评估。当信号分析应用于EEG时,由于应用数字信号处理(DSP)和机器学习(ML)方法

    2024年02月03日
    浏览(26)
  • ADS笔记,时域和频域绘图

    为防止遗忘,记录一下ADS的时间域和频谱图的绘制 在ADS中想得到电路的时域和频域图的话,可以用谐波平衡仿真HB或者选择一个准瞬态仿真控制器插入到原理图中来实现。 然后点击仿真,选择如下 时域设置 得到时域图如下 频域设置 选择幅度谱 得到幅度谱如下 时域设置 这

    2024年02月12日
    浏览(41)
  • 一篇文章讲清楚什么是频率、频域、时域

            在1s内完成周期性变化的次数叫做 频率 ,常用f表示。 简单的说是一个周期内能够重复的次数 ,无论是正玄波也好,还是点阵也好,最基本的要求是在一个周期内必须要具备可重复的能力,否则就没办法计算频率,勉强计算的话频率为1Hz;总体来说,频率越高,

    2024年02月11日
    浏览(31)
  • 窄带波束形成——时域与频域常规窄带波束形成

    最近学习了一下《最优阵列处理技术》,应老师要求写一个线性均匀水听器阵列的常规波束形成,由于是初学者,写的可能会有点问题,欢迎大家提出修改建议和指导,写这个主要是记录自己的思考,其次是和初学者进行交流提升。 要实现波束形成,首先得了解频率波束响应

    2024年02月09日
    浏览(27)
  • 语音识别入门第二节:语音信号处理及特征提取

    目录 数字信号处理基础 基础知识 傅里叶分析 常用特征提取 特征提取流程 Fbank MFCC 模拟信号到数字信号转化(ADC) :在科学和工程中,遇到的大多数信号都是连续的模拟信号,而计算机只能处理离散的信号,因此,必须对这些连续的模拟信号进行转化,通过采样和量化,转

    2024年02月10日
    浏览(32)
  • LabVIEW开发高压配电设备振动信号特征提取与模式识别

    LabVIEW开发高压配电设备振动信号特征提取与模式识别 矿用高压配电设备是井下供电系统中的关键设备之一,肩负着井下供配电和供电安全的双重任务,其工作状态直接影响着井下供电系统的安全性和可靠性。机械故障占配电总故障的70%。因此,机械故障诊断对配电非常重要

    2024年02月13日
    浏览(28)
  • 脑电信号处理与特征提取——4.脑电信号的预处理及数据分析要点(彭微微)

    目录 四、脑电信号的预处理及数据分析要点 4.1 脑电基础知识回顾 4.2 伪迹  4.3 EEG预处理 4.3.1 滤波 4.3.2 重参考 4.3.3 分段和基线校正 4.3.4 坏段剔除 4.3.5 坏导剔除/插值 4.3.6 独立成分分析ICA 4.4 事件相关电位(ERPs) 4.4.1 如何获得ERPs 4.4.2 ERP研究应该报告些什么 4.4.3 如何呈现E

    2024年02月15日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包