当前位置: 首页 > news >正文

【MATLAB数据处理实用案例详解(17)】——利用概念神经网络实现柴油机故障诊断

目录

    • 一、问题描述
    • 二、利用概念神经网络实现柴油机故障诊断原理
    • 三、算法步骤
      • 3.1 定义样本
      • 3.2 样本归一化
      • 3.3 创建网络模型
      • 3.4 测试
      • 3.5 显示结果
    • 四、运行结果
    • 五、完整代码

一、问题描述

柴油机的结构较为复杂,工作状况非常恶劣,因此发生故障的可能性较大。本例采用概率神经网络建立分类模型,采集柴油机振动信号作为输入,成功实现了故障有无的判断和故障类型的判断。
柴油机故障诊断可以抽象对一种分类问题,有无故障的判断,是一种二分类问题,而具体故障类型的判断,为多类分类问题。正确判断的关键在于选择合适的特征来描述柴油机的工作状况,以及选用合适的分类器将不同类别的样本分开。

二、利用概念神经网络实现柴油机故障诊断原理

  1. 特征选择。柴油机运行时包含丰富的特征信息,可以选择气压、油压、热力性能参数、振动参数等。本例采用振动时域信号作为特征信号
  2. 分类器设计。这里采用概率神经网络来完成。
    定义柴油机的五种故障类型:
类型123456
分类模式第一缸喷油压力过大第一缸喷油压力过小第一缸喷油器针阀磨损油路堵塞供油提前角提前正常状态

采集柴油机正常运转和5种故障模式下的振动信号,再对振动波形做统计学处理,得到能量参数、峰度参数、波形参数、裕度参数、脉冲参数和峰值参数,形成一个6维向量:
x = [ x 1 , x 2 , x 3 , x 4 , x 5 , x 6 ] {\bf{x}} = \left[ {{x_1},{x_2},{x_3},{x_4},{x_5},{x_6}} \right] x=[x1,x2,x3,x4,x5,x6]
收集2份每种分类模式的样本,共计12份训练样本,详细样本见3.1节。
用于柴油机故障诊断的概率神经网络模型包含12份输入样本,每个样本为6维向量,分类模式为6种,建立的概率神经网络结构如下:
在这里插入图片描述
算法流程图如下:
在这里插入图片描述

三、算法步骤

3.1 定义样本

每列为一个样本,训练样本为612矩阵,测试样本为66矩阵:

%% 定义训练样本和测试样本
% 故障1
pro1 = [1.97,9.5332,1.534,16.7413,12.741,8.3052;1.234,9.8209,1.531,18.3907,13.988,9.1336]';
% 故障2
pro2 = [0.7682,9.5489,1.497,14.7612,11.497,7.68;0.7053,9.5317,1.508,14.3161,11.094,7.3552]';
% 故障3
pro3 = [0.8116,8.1302,1.482,14.3171,11.1105,7.4967;0.816,9.0388,1.497,15.0079,11.6242,7.7604]';
% 故障4
pro4 = [1.4311,8.9071,1.521,15.746,12.0088,7.8909;1.4136,8.6747,1.53,15.3114,11.6297,7.5984]';
% 故障5
pro5 = [1.167,8.3504,1.51,12.8119,9.8258,6.506;1.3392,9.0865,1.493,15.0798,11.6764,7.8209]';
% 正常运转
normal = [1.1803,10.4502,1.513,20.0887,15.465,10.2193;1.2016,12.4476,1.555,20.6162,15.755,10.1285]';% 训练样本
trainx = [pro1, pro2, pro3, pro4, pro5, normal];
% 训练样本的标签
trlab = 1:6;
trlab = repmat(trlab, 2, 1);
trlab = trlab(:)';

3.2 样本归一化

使用mapminmax函数完成训练样本的归一化:

[x0,s] = mapminmax(trainx);

3.3 创建网络模型

newpnn函数唯一的可调参数为平滑因子spread,在这里将其设置为1:

spread = 1;
net = newpnn(x0, ind2vec(trlab), spread);

3.4 测试

首先需要定义测试样本及其正确分类模式标签,然后将测试样本按与训练样本相同的方式进行归一化,最后将其输入到上一步创建的网络模型中:

% 测试样本
testx = [0.7854,8.7568,1.4915,14.4547,11.1971,7.5071;1.1833,11.8189,1.5481,20.2626,15.5814,10.0646;0.661,8.8735,1.508,13.598,10.5171,6.9744;1.3111,7.9501,1.4915,14.9174,10.7511,7.7127;1.2394,9.6018,1.5366,18.219,13.851,9.0142;    1.2448,8.3654,1.5413,15.2558,11.5643,7.503]';% 测试样本标签(正确类别)
testlab = [3,6,2,5,1,4];% 测试样本归一化
xx = mapminmax('apply',testx, s);% 将测试样本输入模型
s = sim(net,xx);% 将向量形式的分类结果表示为标量
res = vec2ind(s);

3.5 显示结果

显示6个测试样本的诊断结果,这6个样本分别属于一种分类模式:

strr = cell(1,6);
for i=1:6if res(i) == testlab(i)strr{i} = '正确';elsestrr{i} = '错误';end
enddiagnose_ = {'第一缸喷油压力过大','第一缸喷油压力过小', '第一缸喷油器针阀磨损',...'油路堵塞', '供油提前角提前 ','正常'};fprintf('诊断结果:\n');
fprintf('  样本序号    实际类别    判断类别      正/误       故障类型 \n');
for i =1:6fprintf('     %d           %d         %d          %s      %s\n',...i, testlab(i), res(i), strr{i},  diagnose_{res(i)}); 
end

四、运行结果

运行结果如下:
在这里插入图片描述

五、完整代码

完整代码如下:

%% 清空工作空间
clear,clc
close all%% 定义训练样本和测试样本
% 故障1
pro1 = [1.97,9.5332,1.534,16.7413,12.741,8.3052;1.234,9.8209,1.531,18.3907,13.988,9.1336]';
% 故障2
pro2 = [0.7682,9.5489,1.497,14.7612,11.497,7.68;0.7053,9.5317,1.508,14.3161,11.094,7.3552]';
% 故障3
pro3 = [0.8116,8.1302,1.482,14.3171,11.1105,7.4967;0.816,9.0388,1.497,15.0079,11.6242,7.7604]';
% 故障4
pro4 = [1.4311,8.9071,1.521,15.746,12.0088,7.8909;1.4136,8.6747,1.53,15.3114,11.6297,7.5984]';
% 故障5
pro5 = [1.167,8.3504,1.51,12.8119,9.8258,6.506;1.3392,9.0865,1.493,15.0798,11.6764,7.8209]';
% 正常运转
normal = [1.1803,10.4502,1.513,20.0887,15.465,10.2193;1.2016,12.4476,1.555,20.6162,15.755,10.1285]';% 训练样本
trainx = [pro1, pro2, pro3, pro4, pro5, normal];
% 训练样本的标签
trlab = 1:6;
trlab = repmat(trlab, 2, 1);
trlab = trlab(:)';%% 样本的归一化,s为归一化设置
[x0,s] = mapminmax(trainx);%% 创建概率神经网络
tic;
spread = 1;
net = newpnn(x0, ind2vec(trlab), spread);
toc%% 测试
% 测试样本
testx = [0.7854,8.7568,1.4915,14.4547,11.1971,7.5071;1.1833,11.8189,1.5481,20.2626,15.5814,10.0646;0.661,8.8735,1.508,13.598,10.5171,6.9744;1.3111,7.9501,1.4915,14.9174,10.7511,7.7127;1.2394,9.6018,1.5366,18.219,13.851,9.0142;    1.2448,8.3654,1.5413,15.2558,11.5643,7.503]';% 测试样本标签(正确类别)
testlab = [3,6,2,5,1,4];% 测试样本归一化
xx = mapminmax('apply',testx, s);% 将测试样本输入模型
s = sim(net,xx);% 将向量形式的分类结果表示为标量
res = vec2ind(s);%% 显示结果
strr = cell(1,6);
for i=1:6if res(i) == testlab(i)strr{i} = '正确';elsestrr{i} = '错误';end
enddiagnose_ = {'第一缸喷油压力过大','第一缸喷油压力过小', '第一缸喷油器针阀磨损',...'油路堵塞', '供油提前角提前 ','正常'};fprintf('诊断结果:\n');
fprintf('  样本序号    实际类别    判断类别      正/误       故障类型 \n');
for i =1:6fprintf('     %d           %d         %d          %s      %s\n',...i, testlab(i), res(i), strr{i},  diagnose_{res(i)}); 
end

相关文章:

【MATLAB数据处理实用案例详解(17)】——利用概念神经网络实现柴油机故障诊断

目录 一、问题描述二、利用概念神经网络实现柴油机故障诊断原理三、算法步骤3.1 定义样本3.2 样本归一化3.3 创建网络模型3.4 测试3.5 显示结果 四、运行结果五、完整代码 一、问题描述 柴油机的结构较为复杂,工作状况非常恶劣,因此发生故障的可能性较大…...

神奇字符串、密钥格式化----2023/5/6

神奇字符串----2023/5/6 神奇字符串 s 仅由 ‘1’ 和 ‘2’ 组成,并需要遵守下面的规则: 神奇字符串 s 的神奇之处在于,串联字符串中 ‘1’ 和 ‘2’ 的连续出现次数可以生成该字符串。 s 的前几个元素是 s “1221121221221121122……” 。…...

STM32F4_十进制和BCD码的转换

目录 前言 1. BCD码 2. BCD码和十进制转换的算法 前言 最近在学习STM32单片机(不仅仅是32)的RTC实时时钟系统的过程中,需要配置时钟的时间、日期;这些都需要实现BCD码和十进制之间进行转换。这里和大家一起学习BCD码和十进制之…...

random — 伪随机数生成器(史上总结最全)

目的:实现几种类型的伪随机数生成器。 random 模块基于 Mersenne Twister 算法提供了一个快速的伪随机数生成器。Mersenne Twister 最初开发用于为蒙特卡洛模拟器生成输入,可生成具有分布均匀,大周期的数字,使其可以广泛用于各种…...

基于VBA实现成绩排序的最佳方法-解放老师的双手

作为一名老师,每到期末就要面对一件让人头疼的事情——成绩表统计。 首先,要收集每个学生的考试成绩。这需要花费大量的时间和精力,因为每个学生都有多门科目的成绩需要统计。 其次,要将每个学生的成绩录入到电子表格中。这看起来…...

OCAF如何实现引用关系和拓扑关系

在 OpenCASCADE 中,TDF_Label 是用来保存对象及其属性的基本单元。TDF_Label 可以通过添加不同类型的属性来保存不同的数据类型。属性是继承自 TDF_Attribute 类的对象,每个属性都有一个唯一的标识符(GUID)来识别其类型。TDF_Label是OpenCASCADE中用来管理数据的标签类,它…...

自动创建设备节点

在成功加载驱动模块之后,还需要使用 mknod命令创建设备节点,才能在/dev目录下创建对应的设备文件。自动创建设备节点的功能需要依赖 mdev 设备管理机制,在使用 buildroot 构建 rootfs 的时候,会默认构建 mdev 的功能,m…...

JavaWeb ( 六 ) JSP

2.4.JSP JSP (Java Server Pages) : 一种在服务器端生成动态页面的技术,本质上就是Servlet。将HTML代码嵌入到Java代码中, 通过Java逻辑控制HTML代码的结构从而生成页面。在MVC中通常担任视图层(view),负责信息的展示与收集。 2…...

2023世界超高清视频产业发展大会博冠8K明星展品介绍

2023世界超高清视频产业发展大会博冠8K明星展品介绍: 一、博冠8K全画幅摄像机B1 这是一款面向广电应用的机型,可适配外场ENG制作轻量化需求,应用于8K单边机位、新闻、专题的拍摄工作,也可应用于体育转播、文艺节目等特殊机位及各…...

Map接口以及Collections工具类

文章目录 1.Map接口概述1.1 Map的实现类的结构1.2 Map中存储的key-value结构的理解1.3 HashMap的底层实现原理(以JDK7为例)1.4 Map接口的常用方法1.5 TreeMap1.6 Map实现类之五: Properties 1.Collections工具类1.1方法1.1.1 排序操作(均为static方法)1.1.2 查找、替换 1.Map接…...

SOA协议DDS和Some/IP对比

SOME/IP 和 DDS 均已被纳入AUTOSAR AP的平台标准中。 SOME/IP 和 DDS是在不同的应用场景和不同的需求下诞生的技术,所以它们之间注定有很大的区别。 SOME/IP SOME/IP的全称为:Scalable service-Oriented MiddlewarE over IP,是一种面向服务…...

Sass使用

前言: 这份记录,主要是记录学习sass的学习记录,用于记录一些本人认为可能以后会用到的比较常用的一些知识点,更详细的请看sass官网 功能1-嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的…...

超大excel文件读,避免内存溢出

excel40M&#xff0c;但是用传统的读取excel方法&#xff0c;会报内存溢出的错误。 所以采用了下面的方式&#xff0c;能解决此问题&#xff1a; maven依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><ve…...

第0章 学习之前的准备

突然想写点关于linux的东西&#xff0c;一是将自己几十年来零碎的知识作以串联&#xff0c;二是能为正在学习路上的新手作些指引。而恰好作者的孩子是一位初一的学生&#xff0c;我写的这些东西也正是我手把手教授他的&#xff0c;现在分享出来并且命名为《linux中学教程》&…...

数组排序sort()方法

sort() 方法对数组的项目进行排序。 排序顺序可以是按字母或数字&#xff0c;也可以是升序&#xff08;向上&#xff09;或降序&#xff08;向下&#xff09;。 默认情况下&#xff0c;sort() 方法将按字母和升序将值作为字符串进行排序。 一、语法 array.sort(compareFunct…...

【.NET AI Books 前言】Azure OpenAI Service 入门

本书是为 .NET 开发者而写的&#xff0c;让 .NET 开发者能快速掌握 Azure OpenAI Service 的使用技巧。 ChatGPT 的到来意味着我们已经置身于 AI 引起的全新变革中&#xff0c;作为开发者你可能将面临几种改变&#xff1a; GPT 模型到来后&#xff0c;如何去架构好企业解决方案…...

散列查找实验(开散列) 题目编号:583

题目描述 请设计一个整型开散列表&#xff0c;散列函数为除留余数法&#xff0c;其中散列表的长度、除留余数法的模和关键码的个数由键盘输入&#xff0c;再根据输入由键盘输入所有的关键码。分别对三个待查值在散列表中进行查找&#xff0c;输出查找结果采用头插法。 输入描…...

Java版spring cloud 企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...

Go type关键字定义新类型和类型别名的区别

type关键字再定义类型和类型别名有很大的区别&#xff0c;前者是新定义一个数据类型&#xff0c;后者是对类型的重命名。 type NewString stringtype OldString stringtype NewString string声明了一个NewString类型&#xff0c;和string具有完全一致的数据结构&#xff0c;确…...

Neural Network学习笔记2

torch.nn: Containers: 神经网络骨架 Convolution Layers 卷积层 Pooling Layers 池化层 Normalization Layers 正则化层 Non-linear Activations (weighted sum, nonlinearity) 非线性激活 Convolution Layers Conv2d torch.nn.Conv2d(in_channels, out_channels, ke…...

用@Value注解为bean的属性赋值

1.Value注解 Value注解的源码&#xff0c;如下所示 Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) Retention(RetentionPolicy.RUNTIME) Documented public interface Value {String value(); }从Value注解的源码中…...

拨云见日:深入理解 HTML 解析器与有限状态机

文章目录 参考描述状态机状态机有限状态机与无限状态机有限状态机与自动售货机无限状态机与计算器 HTML 解析器HTML 解析器HTML 与有限状态机 HTML 解析器的常见状态初始状态DOCTYPE 状态注释状态标签状态开始标签状态属性状态属性名状态属性值状态 结束标签状态自闭和标签状态…...

Java线程池及其实现原理

线程池概述 线程池&#xff08;Thread Pool&#xff09;是一种基于池化思想管理线程的工具&#xff0c;经常出现在多线程服务器中&#xff0c;如MySQL。 线程过多会带来额外的开销&#xff0c;其中包括创建销毁线程的开销、调度线程的开销等等&#xff0c;同时也降低了计算机…...

进程替换函数组介绍exec*

目录 前述 execl execlp execle execv execvp execvpe 前述 介绍后缀的意义&#xff1a; l &#xff08;list&#xff09;&#xff1a;表示参数采用列表。 v&#xff08;vector&#xff09;&#xff1a;参数同数组表示。 p&#xff08;path&#xff09;&#xff1a;自…...

欧科云链OKLink:2023年4月安全事件盘点

一、基本信息 2023年4月安全事件共造约6000万美金的损失&#xff0c;与上个月相比&#xff0c;损失金额有所降落&#xff0c;但安全事件数量依旧不减。其中&#xff0c;Yearn Finance因参数配置错误&#xff0c;导致了1000多万美金的损失。同时&#xff0c;有一些已经出现过的…...

KubeVirt备份与还原方案【翻译】

KubeVirt备份与还原方案【翻译】 ref:https://github.com/kubevirt/kubevirt/blob/main/docs/backup-restore-integration.md 备份 为所有必需的k8s资源构建依赖关系图冻结应用程序pvc数据快照解冻应用程序将所有必需的k8s资源定义拷贝到一个共享的存储位置&#xff08;可选…...

使用PyQt5设计一款简单的计算器

目录 一、环境配置&#xff1a; 二、代码实现 三、主程序 四、总结 本文使用PyQt5设计一款简单的计算器&#xff0c;可以通过界面交互实现加减乘除的功能&#xff0c;希望能够给初学者一些帮助。主要涉及的知识点有类的定义与初始化、类的成员函数、pyqt5的信号与槽函数等。…...

Htop使用说明

目录 引言 什么是htop htop安装 htop界面介绍 htop功能介绍 引言 我们使用服务器的时候常常需要关注下自己的程序资源占用情况&#xff0c;htop就是一种互动式的进程查查看器&#xff0c;整齐用下来感觉比top的逼格高&#xff0c;造作可视化都更方便些&#xff0c;我觉得还…...

PostgreSQL Linux安装

安装依赖&#xff1a; sudo yum -y install readline-devel zlib-devel 安装Postgres&#xff1a; ssh hadoophadoop001 #下载Postgres wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz tar -zxvf postgresql-14.2.tar.gz -C /data #编译前准备 /dat…...

亚商投资顾问 早餐FM/0509车辆电动化

01/亚商投资顾问 早间导读 1.上交所拟于5月11日举办“发现央企投资价值&#xff0c;促进央企估值回归”交流会 2.监管部门十方面举措加强房地产经纪行业管理 3.广东&#xff1a;推动城市公共服务及货运配送车辆电动化替代 4.昆山两楼盘因大幅降价被暂停网签&#xff1a;降幅…...

招聘网站如何做/福州seo外包公司

C中static类数据成员 C中static类数据成员是指以下两种: 类static成员函数 和 类static数据成员 一&#xff1a;使用类的static成员的优点 1&#xff1a;static成员的名字是在类的作用域中&#xff0c;因此可以避免与其他类的成员或者全局对象名字的冲突 2&#xff1a;可以实…...

连云港做网站优化/排行榜123网

一、将数据库中的Date格式的数据&#xff0c;或者指定日期的字符串格式化为想要的样式DATE_FORMAT (date, format)能根据格式串format 格式化日期或日期和时间值date&#xff0c;返回结果字符串。可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值&#xff0c;以便得到所希望的格…...

wordpress插件语言包/开网站怎么开

概述ab(Apache benchmark)是一款常用的压力测试工具。简单易用&#xff0c;ab的命令行一次只能支持一次测试。如果想要批量执行不同的测试方式&#xff0c;并自动对指标进行分析&#xff0c;那么单靠手工一条一条命令运行ab是不可能的。下面介绍下批量模式怎么实现。一、脚本说…...

wordpress查看内容插件/百度搜索广告怎么投放

Hi everybody &#xff01;上周公司出去团建没有做自己的学习分享&#xff0c;这周和大家分享下我学的matplotlib的使用方法&#xff0c;希望对大家有一丝丝的帮助&#xff0c;有错误的地方也请大家多多指点&#xff0c;嘎嘎。 数据可视化指的是通过可视化表示来探索数据&…...

做网站维护需要什么证书/网络营销推广策划的步骤

sudo gedit /etc/apt/apt.conf当你在安装ubuntu server时&#xff0c;设置代理不小心弄错了&#xff0c;可以通过上面这条命令来修改&#xff0c;我就遇到这个问题&#xff0c;之后使用sudo apt-get install装东西装不上&#xff0c;因此想到了是在安装的时候出了一点refferenc…...

公司网站用个人备案可以/谷歌官网下载

【信奥赛一本通】1208&#xff1a;2的幂次方表示1.【题目描述】2.【解题思路】3.【代码】1.【题目描述】 【题目描述】 任何一个正整数都可以用2的幂次方表示。例如&#xff1a; 137272320 同时约定方次用括号来表示&#xff0c;即ab可表示为a(b)。由此可知&#xff0c;137可…...