关于西储大学数据介绍的文章,已经有很多很多了。本篇文章旨在采用matlab语言,实现对西储大学数据处理,由原数据直接变成可供大家直接用来故障识别的数据。
首先附上一张西储大学数据集介绍的图片,从图中可以看出,西储大学每个数据分别对应哪个故障类型。一般在进行故障诊断的时候,习惯于对同一转速下的数据进行诊断。例如,
105.mat 是直径0.007英寸,转速为1797时的 内圈故障
118.mat 是直径0.007,转速为1797时的 滚动体故障
130.mat 是直径0.007,转速为1797时的 外圈故障
169.mat 是直径0.014英寸,转速为1797时的 内圈故障
185.mat 是直径0.014英寸,转速为1797时的 滚动体故障
197.mat 是直径0.014英寸,转速为1797时的 外圈故障
209.mat 是直径0.021英寸,转速为1797时的 内圈故障
222.mat 是直径0.021英寸,转速为1797时的 滚动体故障
234.mat 是直径0.021英寸,转速为1797时的 外圈故障
因此在诊断的时候习惯于将这几种数据放在一起,送入机器学习模型进行识别。
说一下本篇处理步骤:
- 一共加载10种数据,然后取每个数据的DE_time(%DE是驱动端数据 FE是风扇端数据 BA是加速度数据 选择其中一个就行)
- 设置滑动窗口w,每个数据的故障样本点个数s,每个故障类型的样本量m
- 将所有的数据滑窗完毕之后,综合到一个data变量中
- 对每个故障种类的数据加标签。
程序的结果会输出一个带标签的excel和一个不带标签的excel,大家写程序的时候也可以采用save命令将data变量存储起来,方便以后使用!
给大家看结果图。
带标签的数据整理:这里将第一列设置为标签,一共有s+1列
不带标签的数据整理:一共有s列
代码如下:
clc;
clear;
addpath(genpath(pwd));
%DE是驱动端数据 FE是风扇端数据 BA是加速度数据 选择其中一个就行
load 97.mat %正常
load 105.mat %直径0.007英寸,转速为1797时的 内圈故障
load 118.mat %直径0.007,转速为1797时的 滚动体故障
load 130.mat %直径0.007,转速为1797时的 外圈故障
load 169.mat %直径0.014英寸,转速为1797时的 内圈故障
load 185.mat %直径0.014英寸,转速为1797时的 滚动体故障
load 197.mat %直径0.014英寸,转速为1797时的 外圈故障
load 209.mat %直径0.021英寸,转速为1797时的 内圈故障
load 222.mat %直径0.021英寸,转速为1797时的 滚动体故障
load 234.mat %直径0.021英寸,转速为1797时的 外圈故障
% 一共是10个状态,每个状态有120组样本,每个样本的数据量大小为:1×2048
w=1000; % w是滑动窗口的大小1000
s=2048; % 每个故障表示有2048个故障点
m = 120; %每种故障有120个样本
D0=[];
for i =1:m
D0 = [D0,X097_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D0 = D0';
D1=[];
for i =1:m
D1 = [D1,X105_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D1 = D1';
D2=[];
for i =1:m
D2 = [D2,X118_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D2 = D2';
D3=[];
for i =1:m
D3 = [D3,X130_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D3 = D3';
D4=[];
for i =1:m
D4 = [D4,X169_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D4 = D4';
D5=[];
for i =1:m
D5 = [D5,X185_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D5 = D5';
D6=[];
for i =1:m
D6 = [D6,X197_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D6 = D6';
D7=[];
for i =1:m
D7 = [D7,X209_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D7 = D7';
D8=[];
for i =1:m
D8 = [D8,X222_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D8 = D8';
D9=[];
for i =1:m
D9 = [D9,X234_DE_time(1+w*(i-1):w*(i-1)+s)];
end
D9 = D9';
data = [D0;D1;D2;D3;D4;D5;D6;D7;D8;D9];
ceshi_data = data;
save data data
folder='测试数据汇总/'; %%定义变量
if exist(folder)==0 %%判断文件夹是否存在
mkdir(folder); %%不存在时候,创建文件夹
end
xlswrite('/测试数据汇总/转速1797_测试数据汇总.xlsx',ceshi_data);
dd = [];
for i = 0:size(data,1)/m-1
dd(1+m*i:m+m*i) = i+1;
end
zj = [dd;data'];
ceshi_data = zj';
xlswrite('/测试数据汇总/转速1797_测试数据汇总带标签.xlsx',ceshi_data);
rmpath(genpath(pwd))
如何整理好的code和数据,下方小卡片。关键词:西储大学,任选其一回复。
欢迎大家评论区留言,需要什么类型的代码,欢迎告诉博主!