【故障诊断预测】基于matlab FFT与DBN轴承故障诊断预测【含Matlab源码 1741期】_海神之光的博客-程序员ITS203_matlab故障预测

技术标签: matlab  算法  代码事宜私信博主  Matlab完整代码  Matlab神经网络预测与分类  开发语言  

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【故障诊断预测】基于matlab FFT与DBN轴承故障诊断预测【含Matlab源码 1741期】

获取代码方式2:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、部分源代码

clc;clear;close all;
tic
%% 加载数据
% load('data_process.mat');
load('data_feature.mat');

trainX=double(train_X);
trainYn=double(train_Y);
testX=double(test_X);
testYn=double(test_Y);
clear train_X train_Y test_X test_Y valid_X valid_Y

%% DBN参数设置
rng(0)
% 网络各层节点
input_num=size(trainX,2);%输入层
hidden_num=[50 20];%隐含层,两个数就是两个隐含层 3个数就是3个隐含层
class=size(trainYn,2);%输出层
nodes = [input_num hidden_num class]; %节点数
% 初始化网络权值
dbn = randDBN(nodes);%调用randDBN
nrbm=numel(dbn.rbm);
opts.MaxIter =100;                % 迭代次数
% opts.BatchSize = round(length(trainYn)/4);  % batch规模为四分之一的训练集trainY的长度进行四舍五入取整
opts.BatchSize = 32;  % batch规模
opts.Verbose = 0;               % 是否展示中间过程
opts.StepRatio = 0.1;             % 学习速率
% opts.InitialMomentum = 0.9;%opts.InitialMomentum为0.7
% opts.FinalMomentum = 0.1;%opts.FinalMomentum为0.8
% opts.WeightCost = 0.005;%opts.WeightCost为0
%opts.InitialMomentumIter = 10;

%% RBM逐层预训练
dbn = pretrainDBN(dbn, trainX, opts);%进行dbn的预训练
%% 线性映射-将训练好的各RBM 堆栈初始化DBN网络
dbn= SetLinearMapping(dbn, trainX, trainYn);%调用SetLinearMapping函数

%% 训练DBN-微调整个DBN
opts.MaxIter =100;                % 迭代次数
% opts.BatchSize = round(length(trainYn)/4);  % batch规模为四分之一的训练集trainY的长度进行四舍五入取整
opts.BatchSize =32;


%% 测试
% 对训练集进行预测
trainYn_out = v2h( dbn, trainX );%trainYn_out调用v2h函数
[~,trainY] = max(compet(trainYn'));
[~,trainY_out] = max(compet(trainYn_out'));
%compet是神经网络的竞争传递函数,用于指出矩阵中每列的最大值。对应最大值的行的值为1,其他行的值都为0%分类
% 计算准确率
accTrain = sum(trainY==trainY_out)/length(trainY);%accTrain为TrainY==trainY_out'的总和除以length(trainY)

% 画训练集预测结果
figure%图形
plot(trainY,'r o')%画一个名为trainY,红色的圆圈
hold on%hold on 是当前轴及图形保持而不被刷新,准备接受此后将绘制
plot(trainY_out,'g +')%画一个名为trainY_out,绿色的加号
legend('真实值','预测值')%legend(图例1,图例2)
grid on%画网格
xlabel('样本','fontsize',13)%xlabel(x轴说明)
ylabel('类别','fontsize',13)%ylabel(y轴说明)
title(['原始数据迭代100次训练集准确率:' num2str(accTrain*100) '%'],'fontsize',13)%title(图形名称)

% 对测试集进行预测
testYn_out = v2h( dbn, testX );%testYn_out为调用v2h函数
[~,testY] = max(compet(testYn'));
[~,testY_out] = max(compet(testYn_out'));%compet是神经网络的竞争传递函数,用于指出矩阵中每列的最大值。对应最大值的行的值为1,其他行的值都为0% 计算准确率
accTest = sum(testY==testY_out)/length(testY);%accTest为testY==testY_out'的总和除以length(testY)


三、运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/TIQCmatlab/article/details/123241302

智能推荐

div中 文字垂直居中的解决方案_钟渊的博客-程序员ITS203_div中的文字垂直居中

两种方法 1. 显示  //不需要vertical-align:center;因为没用,重点是上绿色部分,当文字多余一行是不行,采用第二种 2.用padding,填充 下面是我找的资料,蛮详细的在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以

Android下的任务和Activity栈_liujianminghero的博客-程序员ITS203

就像前面提到的,一个activity可以启动另一个,包括那些定义在不同应用程序中的。假设,例如,你想让用户显示一些地方的街道地图。已经有一个activity可以做这个事,所以你的activity所要做的就是将行为对象和需要的信息放在一起,并将它们传递给startActivity()。 地图查看器将显示这个地图。当用户按下后退按钮时,你的activity又重新显示在屏幕上了。对用户来说,这个

Python pandas数据分析以及处理的常用功能_FLY-DUCK的博客-程序员ITS203

在项目开发过程中或者生活上,我们经常会处理和分析数据,使用pandas可以大大的提高分析和处理数据的效率,将数据分析和数据处理过程中常用的方法以及经验做一个记录。pandas官方Get Start使用文档:https://pandas.pydata.org/docs/getting_started/index.htmlpandas官方接口文档:https://pandas.pydata.org/docs/reference/读取数据保存数据分析数据...

更新文档命令_yangzongzhuan的博客-程序员ITS203

----------------------------------------------------更新文档命令1、update()方法来更新标题(title):>db.col.update({'title':'MongoDB 测试'},{$set:{'title':'MongoDB'}})WriteResult({ "nMatched" : 1, "nUpserted"

java8 接口的默认方法和静态方法_云原生手记的博客-程序员ITS203

java8 接口的默认方法和静态方法首先我们要总体说一下,为什么要有这两个方法存在:(1)原先的jdk7之类的,它们接口中的方法都是抽象方法,没有具体的实现,就相当于定义好了这个接口有哪些功能,却没有具体定义功能是怎么实现的,通常由接口的实现类来做具体功能实现。那么,如果面向接口编程,大家已经根据自己需要通过继承接口的方式来实现了自己的功能,突然有一天,产品提需求了,你需要给所有接口的实现

ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文_腾讯AI实验室的博客-程序员ITS203

感谢阅读腾讯AI Lab微信号第34篇文章。当地时间 7 月 10-15 日,第 35 届国际机器学习会议(ICML 2018)在瑞典斯德哥尔摩成功举办。ICML 201...

随便推点

poj 1062(Kuangbin最短路专题M题)_hi_One_Month的博客-程序员ITS203

/**输入:输入第一行是两个整数M,N(1 <= N <= 100),依次表示地位等级差距限制和物品的总数。接下来按照编号从小到大依次给出了N个物品的描述。每个物品的描述开头是三个非负整数P、L、X(X < N),依次表示该物品的价格、主人的地位等级和替代品总数。接下来X行每行包括两个整数T和V,分别表示替代品的编号和"优惠后的价格"。限制条件:所有参与交换的物品主人等级之间差距不超过

wxWidgets学习笔记(三):事件_接受自己,改变自己的博客-程序员ITS203

说明:本文是作者的一点总结,对所学的回顾与记录,如有不妥之处,欢迎大家指正,并且讨论交流。本文着重介绍如何自定义自己的事件类。1、GUI程序是事件驱动的,一个wxGUI程序的执行过程:主函数在wxApp的OnInit()实现,OnInit()中创建一个frame或者dialog的实例,开始循环,等待事件发生并交给相应的事件处理函数处理。2、事件分为两类:wxWidgets支持的控件事件以及...

一个屌丝程序猿的人生(一百二十五)_左潇龙的博客-程序员ITS203

  公司在3楼,林萧爬过昏暗的楼梯,最终来到了门牌号为302的一户跟前。  轻轻的敲了敲门,林萧开始在门外等候。  没过多久,门便从里面打开了,开门的是一个女生,看上去大约25岁左右的样子,长相比较一般,不过笑起来的样子还挺好看,恐怕这也是为什么这个女生的工位就在门口的原因。  “你好,你是.......”  “噢!你好!我是来面试的,我叫林萧。”  “面试的啊......您稍等一下。”  女生说完之后,便小跑着进到了里面的一扇门。  此时林萧站在门口,也开始打量这家公司的环境,

matlab幅值解调,DSB解调后信号的幅值与信号的幅值为啥差别那么大_斗鱼直播-大司马的博客-程序员ITS203

做了一个DSB调制和解调程序,在信号相干过滤波器的时候,我自己写了一个先将它们频域相乘再逆FFT得到滤波后的信号,但是它的幅度比我预期的小一半左右,然后我又使用filter函数,直接对时域信号进行滤波,这时得到的结果就和我的预期差不多了,各位大神指点一下。&gt;&gt; wp = 3;%通带截止频率&gt;&gt; ws = 6;%阻带截止频率&gt;&gt; Rp = 1;%通带最大衰减1dB...

【C语言】“Hello World!”的N种写法_YuJar的博客-程序员ITS203_c语言的hello world怎么写

在初学一门编程语言的时候,写一个“Hello world!”程序是最常见的入门方法。通过写一个成功的“Hello world!”,可以实践这门语言最基本的语法特性,还可以带给自己成就感,真是一举两得。C/C++语言本身有很多特性,如果能够将这些技术分解出来变成一个个的“Hello world!”,并且将这些技术点到为止,貌似也算是一件善事。这里,列举了10个“Hello world!”程序,大家雅

Java实现头像截取裁剪后图片保存,获取的是base64数据,怎么转换为图片并保存到数据库。_xixidabai的博客-程序员ITS203

头像截取裁剪后图片保存,(base64数据)形式保存到数据库和文件http://blog.csdn.net/qq_36410795/article/details/72652027

推荐文章

热门文章

相关标签