旋转机械振动信号特征提取(Python)

前缀 :将一维机械振动信号构造为训练集和测试集(Python)

https://mp.weixin.qq.com/s/DTKjBo6_WAQ7bUPZEdB1TA

import pandas as pd
import numpy as np
import scipy.io as sio
import statistics_hamming
from statistics_hamming import *
signals_train_mat = sio.loadmat('./ProcessedData/signals_train.mat')
signals_train_mat
{'__header__': b'MATLAB 5.0 MAT-file Platform: nt, Created on: Wed May  5 09:16:40 2021',
 '__version__': '1.0',
 '__globals__': [],
 'Signal': array([[ 0.00470634,  0.00733712,  0.00963905, ...,  0.00536404,
          0.00470634,  0.00503519],
        [-0.00614561, -0.00581676, -0.00450137, ...,  0.00503519,
          0.00799482,  0.0093102 ],
        [-0.01699756, -0.01436679, -0.01140716, ...,  0.0777104 ,
          0.09053544,  0.08330081],
        ...,
        [-0.00219944, -0.0018706 , -0.00154175, ...,  0.00963905,
          0.0093102 ,  0.00898136],
        [ 0.00503519,  0.00207557,  0.00174672, ..., -0.00022636,
         -0.0012129 , -0.00285714],
        [-0.00252829, -0.00219944, -0.0018706 , ..., -0.01173601,
         -0.00647446,  0.00043133]]),
 'Tipo': array(['Outer', 'Outer', 'Inner', 'Sano ', 'Inner', 'Sano ', 'Outer',
        'Inner', 'Inner', 'Outer', 'Sano ', 'Outer', 'Sano ', 'Inner',
        'Outer', 'Sano ', 'Inner', 'Outer', 'Sano ', 'Outer', 'Inner',
        'Inner', 'Inner', 'Outer', 'Sano ', 'Sano ', 'Sano '], dtype='<U5')}
X_train = signals_train_mat['Signal']
y_train = signals_train_mat['Tipo']
signals_test_mat = sio.loadmat('./ProcessedData/signals_test.mat')
X_test = signals_test_mat['Signal']
y_test = signals_test_mat['Tipo']
signal = X_train[0][0:20000]
signal
array([ 0.00470634,  0.00733712,  0.00963905, ..., -0.01206486,
       -0.01009178, -0.00614561])
kurt_train = []
impulse_factor_train = []
RMS_train = [] 
margin_factor_train = []
skewness_train = []
shape_factor_train = []
peak_to_peak_train = []
crest_factor_train = []


for i in range(len(X_train)):
    for j in range(10):
        signal = X_train[i][200000 * j : 200000 * (j+1)]
        kurt, impulse_factor, RMS, margin_factor, skewness, shape_factor, peak_to_peak, crest_factor = parameters_hamming(signal)
        kurt_train.append(kurt)
        impulse_factor_train.append(impulse_factor)
        RMS_train.append(RMS)
        margin_factor_train.append(margin_factor)
        skewness_train.append(skewness)
        shape_factor_train.append(shape_factor)
        peak_to_peak_train.append(peak_to_peak)
        crest_factor_train.append(crest_factor)
y_train = signals_train_mat['Tipo']
tipo_train = []
for i in range(len(y_train)):
    for j in range(10):
        tipo_train.append(y_train[i])
        
y_train = tipo_train
len(y_train)
270
kurt_test = []
impulse_factor_test = []
RMS_test = [] 
margin_factor_test = []
skewness_test = []
shape_factor_test = []
peak_to_peak_test = []
crest_factor_test = []


for i in range(len(X_test)):
    for j in range(10):
        signal = X_test[i][200000 * j : 200000 * (j+1)]
        kurt, impulse_factor, RMS, margin_factor, skewness, shape_factor, peak_to_peak, crest_factor = parameters_hamming(signal)
        kurt_test.append(kurt)
        impulse_factor_test.append(impulse_factor)
        RMS_test.append(RMS)
        margin_factor_test.append(margin_factor)
        skewness_test.append(skewness)
        shape_factor_test.append(shape_factor)
        peak_to_peak_test.append(peak_to_peak)
        crest_factor_test.append(crest_factor)
y_test = signals_test_mat['Tipo']
tipo_test = []
for i in range(len(y_test)):
    for j in range(10):
        tipo_test.append(y_test[i])
        
y_test = tipo_test
len(y_test)
90
df_train = pd.DataFrame({'Tipo': np.core.defchararray.replace(y_train, ' ', ''), 'Kurtosis': kurt_train,
                                   'Impulse factor': impulse_factor_train, 
                                   'RMS': RMS_train, 'Margin factor': margin_factor_train, 'Skewness': skewness_train,
                                   'Shape factor': shape_factor_train, 'Peak to peak': peak_to_peak_train,
                                   'Crest factor': crest_factor_train})
df_test = pd.DataFrame({'Tipo': np.core.defchararray.replace(y_test, ' ', ''), 'Kurtosis': kurt_test, 
                                   'Impulse factor': impulse_factor_test, 
                                   'RMS': RMS_test, 'Margin factor': margin_factor_test, 'Skewness': skewness_test,
                                   'Shape factor': shape_factor_test, 'Peak to peak': peak_to_peak_test,
                                   'Crest factor': crest_factor_test})
df_test

df_train.to_csv('./ProcessedData/statistics_10_train.csv', index = False, header = True, sep = ',')
df_test.to_csv('./ProcessedData/statistics_10_test.csv', index = False, header = True, sep = ',')

特征提取辅助函数

import scipy.stats 
from scipy.stats import kurtosis, skew
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np


def highlowfilter(k_filter, input_signal):
    '''
    Given a signal, it applies the high pass or low pass band filter to it, depending on the input choice.
    INPUT:
        - k_filter: kind of filter applied: 
            * 'hp' high pass
            * 'low': low pass
        - input_signal: signal to which to apply the filter 
    '''
    b, a = signal.butter(3, 0.05, k_filter) 


    zi = signal.lfilter_zi(b, a)
    z, _ = signal.lfilter(b, a, input_signal, zi = zi * input_signal[0])


    z2, _ = signal.lfilter(b, a, z, zi = zi * z[0])


    y = signal.filtfilt(b, a, input_signal)
    
    return z, z2, y


def parameters_hamming(xsignal):
    '''
    Given the signal 'xsignal', it applies the Hamming window function, a low pass filter, 
    and calculates certain statistics and parameters. 
    '''
    xsignal = xsignal * signal.hamming(len(xsignal))
    _, _, x = highlowfilter('low', xsignal)
    N = len(x)
    n_inf = max(abs(x))
    kurt = kurtosis(x)
    impulse_factor = N * n_inf / sum(abs(x))
    RMS = np.sqrt(sum(x**2))
    margin_factor = n_inf / RMS**2
    skewness = skew(x)
    shape_factor = N * RMS / sum(abs(x))
    peak_to_peak = max(x) - min(x)
    crest_factor = n_inf / RMS
    
    return kurt, impulse_factor, RMS, margin_factor, skewness, shape_factor, peak_to_peak, crest_factor

知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在质量检验中,如何才能提高生产效率

在当今这个快速发展的时代&#xff0c;生产效率与质量如同企业的双翼&#xff0c;缺一不可。然而&#xff0c;在追求高效率的同时&#xff0c;如何确保产品质量不滑坡&#xff0c;一直是企业面临的一大挑战。今天&#xff0c;我们就来分享一些成功的经验&#xff0c;在质量检验…

华为数通——链路聚合

链路聚合&#xff1a;又称为端口汇聚&#xff0c;是指两台交换机之间在物理上将两个或多个端口连接起来&#xff0c;将多条链路聚合成一条逻辑链路&#xff0c;从而增大链路带宽&#xff0c;多条物理链路之间能够相互冗余。 作用&#xff1a;增加链路带宽&#xff0c;同时提供…

精益管理咨询公司在与企业沟通时,应该如何展示自己的专业性?

在竞争激烈的商业环境中&#xff0c;精益管理咨询公司扮演着至关重要的角色。它们不仅为企业提供策略性的指导&#xff0c;还帮助企业实现资源的优化配置&#xff0c;从而达到提高效率、降低成本的目的。那么&#xff0c;精益管理咨询公司在与企业沟通时&#xff0c;应该如何展…

【python011】经纬度点位可视化html生成(有效方案)

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等&#xff0c;如获取省市等边界区域经纬度进行可视化&#xff0c;从而辅助判断、决策。 2.欢迎点赞、关注、批评、指正&#xff0c;互三走起来&#xff0c;小手动起来&#xff01; 3.欢迎点赞、关注、批…

昇思25天学习打卡营第5天 | 网络构建

目录 1.定义模型类 2.模型层 nn.Flatten nn.Dense nn.ReLU nn.SequentialCell nn.Softmax 3.模型参数 代码实现&#xff1a; 总结 神经网络模型是由神经网络层和Tensor操作构成的&#xff0c; mindspore.nn提供了常见神经网络层的实现&#xff0c; 在MindSpore中&a…

从宏基因组中鉴定病毒序列(1)

Introduction 在环境微生物学和生态学研究中&#xff0c;宏基因组学&#xff08;Metagenomics&#xff09;技术的应用已经彻底改变了我们对微生物群落的理解。宏基因组学通过对环境样本中的全部遗传物质进行测序和分析&#xff0c;可以全面揭示微生物群落的组成、功能和相互作…

操作系统概论(二)

一、单项选择题(本大题共20小题&#xff0c;每小题1分&#xff0c;共20分) 在每小题列出的四个备选项中只有一个选项是符合题目要求的&#xff0c;请将其代码填写在题后的括号内。错选、多选或未选均无分。 1&#xff0e;操作员接口是操作系统为用户提供的使用计算机系统的手…

自产厂家将品牌入驻美国商超的详细流程及其显著优势

随着全球化的深入推进&#xff0c;越来越多的国内厂家开始寻求海外市场的拓展&#xff0c;其中美国商超成为了一个重要的目标市场。那么&#xff0c;国内厂家想要将产品入驻美国商超需要经历哪些详细流程呢?同时&#xff0c;这样的举措又有哪些显著优势呢?接下来&#xff0c;…

西部证券:1+1>2?

又一起券商收购拉开帷幕&#xff0c;证券业并购浪潮呼之欲出。 这次是——西部证券。 最近&#xff0c;西部证券公告称&#xff0c;因自身发展需要正在筹划收购国融证券控股权事项&#xff0c; 这是继“浙商国都”、“国联民生”、“华创太平洋”之后&#xff0c;今年券商并购…

HTML(16)——边距问题

清楚默认样式 很多标签都有默认的样式&#xff0c;往往我们不需要这些样式&#xff0c;就需要清楚默认样式 写法&#xff1a; 用通配符选择器&#xff0c;选择所有标签&#xff0c;清除所有内外边距选中所有的选择器清楚 *{ margin:0; padding:0; } 盒子模型——元素溢出 作…

Android CTS环境搭建

CTS即Compatibility Test Suite意为兼容性测试&#xff0c;是Google推出的Android平台兼容性测试机制。其目的是尽早发现不兼容性&#xff0c;并确保软件在整个开发过程中保持兼容性。只有通过CTS认证的设备才能合法的安装并使用Google market等Google应用。 搭建CTS测试环境需…

2008年 - 2021年 地级市-人口密度数据

人口密度是一个关键的人口统计指标&#xff0c;它反映了在一定地理范围内的人口分布情况。这个指标对于理解一个国家或地区的空间人口分布、资源分配、社会经济发展和城市规划等方面都具有重要意义。 人口密度的计算方法 人口密度是通过将一个地区的常住人口数除以其面积来计…

一文详解去噪扩散概率模型(DDPM)

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

恒远世达:把握现在,高考后逆袭,开启日本留学之路!

一年一度的高考已经落幕&#xff0c;马上就要出高考分数了&#xff0c;有人欢喜有人忧&#xff0c;奋斗学习了这么多年&#xff0c;就为了考上一所理想的大学&#xff0c;一旦没考上&#xff0c;心情会非常的低落。 在传统心态中&#xff0c;高考失利意味着人生重大失败&#…

VS Code SSH 远程连接服务器及坑点解决

背景 Linux服务器重装了一下&#xff0c;IP没有变化&#xff0c;结果VS Code再重连的时候就各种问题&#xff0c;导致把整个流程全部走了一遍&#xff0c;留个经验帖以备查看 SSH 首先确保Windows安装了ssh&#xff0c;通过cmd下ssh命令查看是否安装了。 没安装&#xff0c;…

CAD平台大模型场景显示性能优化分析总结

1.性能瓶颈原因 图元过于复杂 &#xff08;1&#xff09;图元内的三角形面片过多。对于CAD平台大场景&#xff0c;单帧三角面片数量达到5000万。 &#xff08;2&#xff09;图元的各种计算过多。 过多的图元。例如土建场景&#xff1a;将近20万的构件&#xff0c;绘制次数将…

原装GUVCL-T10GD韩国GENICOM光电二极管紫外线传感器原厂代理商

深圳市宏南科技有限公司是韩国GenUV公司的原厂代理商&#xff0c;所售紫外线传感器均来自于原始生产厂商直接供货&#xff0c;非第三方转售。 GUVCL-T10GD 韩国GENICOM光电二极管光传感器 / 低亮度 / 紫外线 UV-C传感器 GUVCL-T10GD 采用基于氮化铟的材料 肖特基型 光电二极管…

生产环境安装odoo

odoo可以在多平台运行&#xff0c;但是在生产环境下官方不建议在Windows平台部署。在Windows下可能不能很好的支持一服务多worker的形式&#xff0c;更推荐在Linux下部署。 常见的Linux如Ubuntu、Debian等Debian系或Redhat系都能执行官网的包安装。 地址&#xff1a;Download |…

C# Web控件与数据感应之数据返写

目录 关于数据返写 准备视图 范例运行环境 ControlInducingFieldName 方法 设计与实现 如何根据 ID 查找控件 FindControlEx 方法 调用示例 小结 关于数据返写 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&#xff0c;数据…

Docker(七)-Docker容器数据卷

1.容器数据卷是什么 卷就是目录或者文件&#xff0c;存在于一个或者多个容器中&#xff0c;由docker挂载到容器&#xff0c;不属于容器内(类似于笔记本电脑外的一个移动硬盘)。 卷的设计目的就是数据持久化&#xff0c;完全独立于容器的生存周期&#xff0c;因此Docker不会在容…