旋转机械振动信号特征提取(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 npdef 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, ydef 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**2skewness = skew(x)shape_factor = N * RMS / sum(abs(x))peak_to_peak = max(x) - min(x)crest_factor = n_inf / RMSreturn kurt, impulse_factor, RMS, margin_factor, skewness, shape_factor, peak_to_peak, crest_factor知乎学术咨询:
https://www.zhihu.com/consult/people/792359672131756032?isMe=1

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

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

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

相关文章

掌握这些 Windows 截图工具:猫头虎带你解析 ShareX、PicPick、FastStone 和 Snagit

掌握这些 Windows 截图工具&#xff1a;猫头虎带你解析 ShareX、PicPick、FastStone 和 Snagit 前言 在日常办公、学习和内容创作中&#xff0c;截图是我们经常需要用到的功能。然而&#xff0c;面对各种不同的截图需求&#xff0c;如全屏截图、区域截图、滚动截图等&#xf…

被年轻人买爆的转运能量石,戴一天竟等于拍千次胸片?

离谱的事年年有&#xff0c;这几年可以说非常多&#xff01;‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 尤其是这届年轻人&#xff0c;不知道什么时候开始&#xff0c;越来越迷信了&#xff01; 比如去年很…

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中&#xff0c;少不了使用word&#xff0c;这个是大家必备的软件&#xff0c;今天给大家分享word设置上标快捷键&#xff0c;希望在办公中能帮到您&#xff01; 1、添加上标 在录入一些公式&#xff0c;或者是化学产品时&#xff0c;需要添加上标内容…

华为数通——链路聚合

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

小红书官方教程:如何在小红书上打造IP

在小红书这个五彩斑斓的社区里&#xff0c;打造一个成功的IP就像是种下一颗种子&#xff0c;看着它慢慢发芽&#xff0c;开花结果。今天&#xff0c;就让我们来聊聊如何在小红书上打造一个让人眼前一亮的个人品牌。 首先&#xff0c;什么是IP&#xff1f;IP&#xff0c;也就是…

0620,0621,0622,结构体,动态数组,链表(面试题)

目录 第九章&#xff08;结构体和枚举&#xff09;第十章&#xff08;指针的高级运用&#xff09;链表思维导图 作业1&#xff1a;结构体相关 解答&#xff1a; 答案&#xff1a; 作业2&#xff1a;简答题&#xff08;动态分配内存相关&#xff09; 解答&#xff1a; 答…

邮件群发推送的方法技巧?有哪些注意事项?

邮件群发推送的策略如何实现&#xff1f;邮件推送怎么评估效果&#xff1f; 电子邮件营销是现代企业进行推广和沟通的重要工具。有效的邮件群发推送不仅能提高客户参与度&#xff0c;还能促进销售增长。AokSend将探讨一些关键的邮件群发推送方法和技巧&#xff0c;以帮助企业优…

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

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

element-ui table使用type=‘selection‘复选框全禁用-全选禁用_elementui table禁用全选

问题点&#xff1a;当条件数据全被禁用时&#xff0c;全选按钮不是禁用的状态。 复选框全被禁用时&#xff0c;全选按钮将被隐藏 问题总结&#xff1a; 当条件数据全被禁用时&#xff0c;全选按钮也变成禁用的状态&#xff0c;而不是隐藏。有会做的小伙伴希望跟帖。谢谢&#x…

Redis-数据类型-zset

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db4数据库4、将一个或多个member元素及其score值加入到有序集key当中5、升序返回有序集key6、升序返回有序集key&#xff0c;让分数一起和值返回的结果集7、降序返回有序集key&#xff0c;让分数一起和值返回到结…

同城跑腿APP开发,随叫随到超方便!

随着移动互联网的发展和人们生活节奏的加快&#xff0c;越来越多的人们没有闲暇的时间来做一些繁琐的事情&#xff0c;比如说买药、挂号、排队、送花、取文件等等。如果没有时间去处理这些事情怎么办&#xff1f;开发同城跑腿APP&#xff0c;提供跑腿服务&#xff0c;随时办事随…

【C++】循环、控制流语句、指针、引用

8、循环&#xff08;loops&#xff09;&#xff08;1&#xff09;for loops for循环非常灵活&#xff0c;可以做很多事情。上图红框框出来的代码块就是一个for循环。 for是关键字 for后面内容分为三部分&#xff0c;每部分用分号&#xff1b;隔开 第一部分A是变量的声明&…

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维&#xff0c;在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现&#xff1a;坐标校正&#xff0c;我们如何使漫无目的鼠标点击变得有序化和可控化呢&#xff1f; 目录 一、从鼠标监听到获取坐标 1.MouseListener和Mouse…

VBA学习(16):工作表事件示例:输入数据后锁定单元格

在工作表单元格中输入数据后&#xff0c;该单元格就被锁定&#xff0c;不能再编辑。 打开VBE&#xff0c;在工程资源管理器中双击该工作表名称打开其代码模块&#xff0c;在其中输入下面的代码&#xff1a; 假设整个工作表的LockedFalse Private Sub Worksheet_Change(ByVal …

用JavaScript实现了一个简单的图像坐标点标注工具

这段代码实现了一个简单的图像标注工具&#xff0c;允许用户在加载的图像上进行点选标注&#xff0c;并且通过右键确认一个点序列来形成一个多边形。 标注效果如下 实现代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"U…

AI绘画Stable Diffusion 超强一键去除图片中的物体,免费使用!

大家好&#xff0c;我是设计师阿威 在生成图像时总有一些不完美的小瑕疵&#xff0c;比如多余的物体或碍眼的水印&#xff0c;它们破坏了图片的美感。但别担心&#xff0c;今天我们将介绍一款神奇的工具——sd-webui-cleaner&#xff0c;它可以帮助我们使用Stable Diffusion轻…

Rust高性能日志库tklog0.0.8—支持mod设置参数

tklog是rust高性能结构化日志库&#xff0c;支持同步日志&#xff0c;异步日志&#xff0c;支持自定义日志的输出格式&#xff0c;支持按时间&#xff0c;按文件大小分割日志文件&#xff0c;支持日志文件压缩备份&#xff0c;支持官方日志库标准API&#xff0c;支持mod独立参数…

怎么将文件免费扫描?这篇文章教你几个文件扫描方法

随着时间的流逝&#xff0c;我们所珍藏的纸质文件可能会面临破损和丢失的风险。 为了确保这些宝贵的资料得到妥善保管&#xff0c;将它们转换为电子格式并存储于电脑中无疑是一个明智之举。 那么&#xff0c;我们应当如何将这些纸质资料转换为易于管理和访问的电子文档呢&…

CMake基础教程

用法 cmake -B build // 配置&#xff0c;在源码目录用 -B 直接创建 build 目录并生成 build/Makefile cmake --build build -j4 // 构建&#xff0c;Linux会调用make&#xff0c;Windows会调用devenv.exe cmake --version 定义 -DCMAKE_INSTALL_PREFIX/opt/openvdb-8.0 /…

C++必修:模版的入门到实践

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 泛型编程 首先让我们来思考一个问题&#xff0c;如何实现一个交换函数&#x…