首页 > 编程知识 正文

脉冲编码器位置未确定如何解除,编码器常见故障及处理方法

时间:2023-05-06 09:27:57 阅读:30786 作者:2999

% E5 % 9f % ba % E4 % ba %8ematlab % E7 % 9a % 84 deeplearntoolbox % E5 % B7 % E5 % B7 % E7 % ae7 % B1 % ef % BC % 88 % E6 % B9 % 25 % 2094 % A8 % E4 % ba %8E6 % E6 % A0 % E7 % E7 % a3 % E5 % a6 % B9 % ef % BC % 8c % E5 % BC % 8d % BC % 222 5 % 85 % 25 % 20 % bb % ad % E5 % B0 % 86 % E5 % 85 % B6 % E7 % 94 % A8 % E4 % ba % 8e8% BD % B4 % E6 % 89 % BF % E6 % 95 % ed 7 % 204 % b8 % aa % E5 % 90 % ABN % E4 % b8 % aa % e9 % 9a % 90 % E5 % B1 % 82 % E7 % 9a % 84 DAE % ef % BC % 84c % ee b8 % a4 % E5 % B1 % 82 % E5 % 8f % af % E4 % bb % a5 % e9 % 80 % BF % 87 % e9 % 87 % 94 % A8 % E4 % b8 % 20e7% 25 % 20a % E4 % b8 % E4 % b8 % 80 % E4 % b8 % aaae % E7 % 9a % e9 % 90a % E5 % ab5 % B1 % 82 % E8 % be93 % 25 % E5 % % 2087 % 28https://kns.cn ki.net % 2fk CMS % 2f detail.aspx % 3f filename % 3d 1020832508.NH dbname %3DCM FD 2021 % 221 b % 83 % ef % BC % 8c % E8 % AE % ad % E7 % bb % 83 % ed % 20f % BC % 8c % 88 % a9 % E7 % 94 % A8 % E8 % BF % 99 % E4 % bb E6 % 83 % e9 % 87 % 8d % ef % BC % 8c % E5 % 88 % 9d % 20e7% a4 % ba % BC % 8c % E6 % a5 % E7 % 9d % 80 % E5 % 9c % A8 % % E6 % 80 % E7 % bb % 88 % E7 % 9a % 84 DAE % E3 % 80 % 80 % 25 % 20 % 87 % 8d % E6 % 9e % 20 % 25 % 20 daec LC % 3b CLEC 5 % B0 % E6 % 8d % AE load % 20m NIST _ uint 8数据% 3d double % 28 train _ x % 29 % 3b % 25 % 20 method % 20od % 28data % 27 % 29 20 A8 % 20 % E5 % 81 % E8 % ae8 % be8 % be9 % E5 % 85 % a7 % bb4 % E5 % ba6 % E4 % b8 % ba20 sizes0% 20e % 20 % E4 % b8 % E4 % E4 % E4 % % E5 % 90 % 84ae % E7 % 9a % 84 % E5 % ad % a6 % E4 % B9 % A0 % E7 % 87 num epochs1% 3d 10 % 3b % 25 % E5 % 840 % 25 % 20 % 25 % 25 % 90 % 84ae % E7 % 9a % 25 % 20 zes % 2c activation _ function %2clearn ingrate1% 29 %3bopts.num epochs % 20 % 3d % 20 num epopocts % E8 % ae7 % bb % 83 % E8 % BF % 87 % E7 % A8 % bdae % 200 % 25 % 20 % E4 % b8 % 8a % e9 % E6 % A0 % E7 % 9b % 91 % E7 % aa % E7 % BC % 96 % E7 % A0 % 81 % E5 % A8 learningraara % 20 % 3b % DAE % E7 % 9a % 84 % E8 % AE % ad % E7 % bb % 83 % E6 % AC e % 28 train _ x % 2c2% 29 % 5d % 29 % 3b % 25 % E5 % af % B9 % E7 % B0 % E7 % 9a 84 % E7 % 20a % E4 % b8 % 8d % E8 % BF arning rate2%3bnn %3ddaeunfoldnn % 28nn % 2cd AE % 29 % 3b % 25 % E5 % 88 % a9 % E7 % 94 % a8ae % E7 % 25

置的100次,目测loss曲线还在继续下降,可以继续训练,这里就不做展示了。

3 基于DAE的轴承故障无监督异常检测

背景:自然界中含有大量正常样本 而少量异常样本,如果直接构建2分类模型,则容易造成数据不均衡,为此有专家提出无监督异常检测。作为异常检测的经典方法,DAE仅用正常样本进行训练,其输入=输出,以输入输出之间的重构误差最小化作为损失函数,学习的是正常样本的数据分布,当输入异常样本时,由于DAE没有用异常数据进行训练,其重构数据与本身将会产生较大的重构误差,基于此思想,DAE本广泛用于异常检测中。

3.1 数据集构建

       采用西储大学轴承故障诊断数据集,48K/0HP数据,共9类故障+一类正常。为模拟自然界中的【大量正常样本 而少量异常样本】这一情况。本文从正常数据中取1000个正常样本,标签记为1;从9类故障中每类取10个样本,共90个故障样本,记为2。

%% 数据预处理(训练集 测试集划分)clc;clear;close all%% 加载原始数据load 0HP/48k_Drive_End_B007_0_122; a1=X122_DE_time'; %1load 0HP/48k_Drive_End_B014_0_189; a2=X189_DE_time'; %2load 0HP/48k_Drive_End_B021_0_226; a3=X226_DE_time'; %3load 0HP/48k_Drive_End_IR007_0_109; a4=X109_DE_time'; %4load 0HP/48k_Drive_End_IR014_0_174 ; a5=X173_DE_time';%5load 0HP/48k_Drive_End_IR021_0_213 ; a6=X213_DE_time';%6load 0HP/48k_Drive_End_OR007@6_0_135 ;a7=X135_DE_time';%7load 0HP/48k_Drive_End_OR014@6_0_201 ;a8=X201_DE_time';%8load 0HP/48k_Drive_End_OR021@6_0_238 ;a9=X238_DE_time';%9load 0HP/normal_0_97 ;a10=X097_DE_time';%10%% 自然界中含有大量正常样本 而少量异常样本,因此下面生成数据集的时候正常弄多点N1=1000;N2=10;L=1024;% 异常状态(故障类数据)每种状态取N2个样本 每个样本长度为L,而正常状态取N1个样本 每个样本长度为Ldata=[];label=[];for i=1:10 if i==1;ori_data=a1;end if i==2;ori_data=a2;end if i==3;ori_data=a3;end if i==4;ori_data=a4;end if i==5;ori_data=a5;end if i==6;ori_data=a6;end if i==7;ori_data=a7;end if i==8;ori_data=a8;end if i==9;ori_data=a9;end if i==10;ori_data=a10;end for j=1:N1 if i<=9 if j==N2+1 break end end start_point=fdzc(length(ori_data)-L);%随机取一个起点 end_point=start_point+L-1; data=[data ;ori_data(start_point:end_point)]; label=[label;i]; end end%% 异常检测标签,除了正常之外,其他的都是异常,正常用1来表示,异常用标签2表示% 无监督的异常检测方法,训练时仅用正常样本来进行训练data_normal=data(label==10,:);%注意上面,加载的时候正常是a10data_abnormal=data(label~=10,:);%不是10的都是异常% 正常样本取200个以及所有的异常数据作为测试集,用来测试网络性能index=randperm(size(data_normal,1));train_x=data_normal(index(1:end-200),:);test_x=[data_normal(index(end-200+1:end),:); data_abnormal];test_y=[ones(size(data_normal(index(end-200+1:end),:),1),1);2*ones(size(data_abnormal,1),1)];%测试集的标签,训练集全是正常的,这里就不做标签了save result/data_process train_x test_x test_y

3.2 DAE无监督异常检测,DAE结构为1024-10-8-5-8-10-1024(参数是随笔设的,并没有最优)

%% DAE 深度自动编码器 无监督异常检测clc;clear;close all;format compactaddpath(genpath('utils/'))rng(0)%% 1.导入数据load result/data_processdata=train_x;% method=@mapstd;method=@mapminmax;[xs,mapping]=method(data');train_x=xs';%% 无监督训练多个自动编码器 假设输入维度为 sizes=[n n1 n2],则训练两个ae 一个是n-n1-n 一个是n1-n2-n1sizes=[size(train_x,2) 10 8 5];learningRate1=0.01;%各ae的学习率numepochs1=10;%各ae的训练次数batchsize1=20;%%各ae的batchsizeactivation_function='sigm';%各ae的激活函数dae = daesetup(sizes,activation_function,learningRate1);opts.numepochs = numepochs1; opts.batchsize = batchsize1; opts.show=1;% 0就不显示训练过程dae = daetrain(dae, train_x, opts);%% 采用上面无监督预训练好的几个AE来堆栈DAE,构建深度自编码器learningRate2=0.01;%sae的学习率numepochs2=100;%dae的训练次数batchsize2=20;%dae的batchsizenn = nnsetup([size(train_x,2) 10 8 5 8 10 size(train_x,2)]);%对称的结构,和ae一样,只不过dae是包含多个隐含层的aenn.activation_function= 'sigm';nn.learningRate= learningRate2;nn=daeunfoldnn(nn,dae);%利用AE的参数初始化DAEopts.numepochs = numepochs2;opts.batchsize = batchsize2;nn.output = 'linear';opts.show=1;% 0就不显示训练过程opts.plot = 1;%0就不显示loss曲线disp('Train DAE ')nn = nntrain(nn, train_x, train_x, opts);%输入=输出disp('训练完毕')%% 预测 并计算指标labels0 = nnpredict(nn, train_x);% 计算每一个重构误差error0=sum((labels0-train_x).^2,2);% 以均值+3方差为阈值threshold=mean(error0)+3*std(error0);%% 对测试集进行分类data=test_x;xs=method('apply',data',mapping);test_x=xs';labels = nnpredict(nn, test_x);% 计算每一个重构误差error=sum((labels-test_x).^2,2);figure;plot(error);%% 计算检测的正确率pred=[];pred(error<=threshold,1)=1;pred(error>threshold,1)=2;real=test_y;MatrixClassTable=[real pred];[EA,OA,AA,Kappa]=ClassifiEvaluate(MatrixClassTable);disp('----------结果-------------')disp('各类精度');EAdisp('总体精度');OAdisp('平均精度');AAdisp('kappa系数');Kappafigureplot(real,'ro')hold on ;grid onplot(pred,'b*')legend('真实标签','预测标签')xlabel('测试集样本')ylabel('标签')

loss curve:

测试集中每个样本的重构误差(头200个为正常数据,后面90个为异常数据):

以训练集样本的重构误差的均值+3倍方差为阈值,对测试集样本进行判别,大于该阈值的为异常,小于该预测的为正常,得出以下:

混淆矩阵
ConfuMatrix =
   199     1
     0    90
各类精度
EA =
    0.9950
    1.0000
总体精度
OA =
    0.9966
平均精度
AA =
    0.9975
kappa系数
Kappa =
    0.9920

可见DAE是有效的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。