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

news2024/11/29 2:32:48

目录

    • 一、问题描述
    • 二、利用概念神经网络实现柴油机故障诊断原理
    • 三、算法步骤
      • 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:6
   if res(i) == testlab(i)
       strr{i} = '正确';
   else
       strr{i} = '错误';
   end
end

diagnose_ = {'第一缸喷油压力过大','第一缸喷油压力过小', '第一缸喷油器针阀磨损',...
    '油路堵塞', '供油提前角提前 ','正常'};

fprintf('诊断结果:\n');
fprintf('  样本序号    实际类别    判断类别      正/误       故障类型 \n');
for i =1:6
   fprintf('     %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:6
   if res(i) == testlab(i)
       strr{i} = '正确';
   else
       strr{i} = '错误';
   end
end

diagnose_ = {'第一缸喷油压力过大','第一缸喷油压力过小', '第一缸喷油器针阀磨损',...
    '油路堵塞', '供油提前角提前 ','正常'};

fprintf('诊断结果:\n');
fprintf('  样本序号    实际类别    判断类别      正/误       故障类型 \n');
for i =1:6
   fprintf('     %d           %d         %d          %s      %s\n',...
       i, testlab(i), res(i), strr{i},  diagnose_{res(i)}); 
end

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

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

相关文章

linux常用命令大全

作为开发者,Linux是我们必须掌握的操作系统之一。因此,在编写代码和部署应用程序时,熟练使用Linux命令非常重要。这些常用命令不得不会,掌握这些命令,工作上会事半功倍,大大提高工作效率。 一. 文件和目录…

python使用迭代法验证角谷猜想

def fun(n):print(n)while n ! 1:n 3 * n 1 if n % 2 else n / 2print(finished)for i in range(2,1000):fun(i) 1、了解了什么是"角谷猜想" 对于任意一个自然数n,若n为偶数,则将其除以2;若n为奇数,则将其乘以3,然后再加1。如此经过有限次运算后,总可以得到自然数…

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2

【VQ-VAE-2论文精读】Generating Diverse High-Fidelity Images with VQ-VAE-2 0、前言Abstract1 Introduction2 Background2.1 Vector Quantized Variational AutoEncoder 3 Method3.1 Stage 1: Learning Hierarchical Latent Codes3.2 Stage 2: Learning Priors over Latent …

【STM32】知识补充 晶振的基本原理及其应用

【STM32】知识补充 晶振的基本原理及其应用 概述晶振的基本原理晶振的性能参数晶振的分类晶振的应用晶振器在 STM32 上的应用总结 概述 晶振作为现代电子技中的重要组件, 广泛应用于各种电子设备中, 起到稳定时钟信号的作用. 本文将为您解释晶振的基本原理及其在实际应用中的用…

第 02 章 OSPF实验

2.1 OSPF 回顾 2.1.1 实验目的 在 CCNA 中,我们学习到了 OSPF 是一个链路状态路由协议,和 RIP 以及 EIGRP 的最大 不同在于对于它们对于网络的认识以及根本的算法的不同。通过对 CCNA 中 OSPF 配置实验 的回顾,从中加强我们对 OSPF 的理解。…

带你学c带你飞-P7取值范围

比特位 CPU能读懂的最小单元——比特位,bit,b 字节 内存机构的最小寻址单元——字节,Byte,B 1Byte8bit 进制 怎么算 注意:int默认是signed类型,signed类型第一位是符号位 符号位 存放signed类型的存…

对比体验 ChatGPT,聊聊文心一言的优缺点

在昨天文心一言发布后,我第一时间拿到了体验的资格,但第一次使用后却不禁有些失望。他的逻辑能力极度缺乏、创造力也差点意思。不过,今天再次高强度使用后,却又让我对这款产品的想法有了些许改变。 前言 将 2023 年称为 AI 纪元…

西门子PLC沿脉冲类指令汇总

S7-1200CPU提供了四种沿脉冲指令供用户使用,分别为:扫描操作数信号边沿指令、在信号边沿置位操作数的指令、扫描RLO的信号边沿指令以及检测信号边沿指令。 信号从0--1的时刻称为上升沿,信号从1--0的时刻称为下降沿,不管是上升沿还…

【VM服务管家】VM4.0平台SDK_2.1环境配置类

目录 2.1.1 环境配置:CSharp二次开发环境配置方法2.1.2 环境配置:Qt二次开发环境配置方法2.1.3 环境配置:MFC二次开发环境配置方法2.1.4 环境配置:VB.Net二次开发环境配置方法2.1.5 环境配置:运行出现Vm.Core.Solution…

python+django+vue消防知识宣传网站

开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql 数据库工具:Navicat 开发软件:PyCharm 层随着移动应用技术的发展,越来越多的消防单位借助于移动手机、电脑完成生活中的事…

Ubuntu目录和文件的相关操作

目录 1、目录的切换 2、查看目录及文件 3、目录的常见操作 4、文件的常见操作 1、目录的切换 打开终端窗口(”ctrlaltt“) 一般使用(”pwd“)显示当前所在的目录 比如:当前目录是在home下面的,与用户…

01_JUC概述

1. JUC是什么? 在 Java 5.0 提供了 java.util.concurrent(简称JUC)包,在此包中增加了在并发编程中很常用的工具类。此包包括了几个小的、已标准化的可扩展框架,并提供一些功能实用的类,没有这些类,一些功能会很难实现或…

玩手机打电话识别监测算法 yolov8

玩手机打电话识别监测系统通过YOLOv8网络模型技术,玩手机打电话识别监测算法对现场有人玩手机抽烟打电话时可以立即自动进行抓拍存档。YOLOv8 算法的核心特性和改动可以归结为如下:提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率…

【全年汇总】2023年CCF人工智能会议截稿时间汇总(持续更新)

本博文是根据2022年CCF会议推荐的人工智能领域相关会议目录撰写。 一、截稿时间总览 截稿时间的总时间轴内容将会持续更新...... 往年投稿及录用情况及链接详见图片后面的内容。 二、会议详细目录 由于一些会议的投稿时间还没公开,因此根据往年投稿时间在表格中使…

石化企业数字化防爆融合通信解决方案

项目背景 石化工业是我国国民经济和社会发展的基础性、战略性产业,其发展和壮大受到了党和国家的高度重视。随着石化企业厂区规模的不断扩大以及技术的快速发展,现有石化企业专网通信系统建设相对滞后,缺乏结合人员管理、安全生产、安全通信…

商品详情API接口如何获取淘宝数据

淘宝是中国最大最受欢迎的电商平台之一,汇集了大量的商家和买家。在淘宝上热门商品的销量经常十分巨大,因此有些开发者和网站想要获取淘宝商品数据来进行一些分析。下面是一篇关于淘宝商品详情API接口获取淘宝数据的文章。 一、淘宝商品API接口介绍 淘…

HadaFS - Burst Buffer解读

背景 近几年AI,ML,HPC大火, 针对这些场景的存储技术及方案也逐步衍生出两个分支,第一支:以Lustre,BeeGFS等为代表的分布式并行文件系统, 这些文件系统对POSIX提供了很好的支持,各种…

Idea关闭或开启引用提示Usages和Annotations

IDEA的引用提示与Annotation 在2022版本的Idea中,新增了引用提示(Usages)和作者(Annotations)的功能。虽然用起来挺好用的,但对电脑还是有一定的压力,在配置比较低的电脑上,打开一个…

PHP入门【1】使用组合包安装php

目录 一,安装appserv组合包 二,运行第一个php程序 一,安装appserv组合包 组合包:将apache,mysql,php等服务器软件和工具安装配置完成后打包处理 组合包大大提高了我们的效率,不需要为配置环境…

使用Python和机器学习进行文本情感分类

使用Python和机器学习进行文本情感分类 1. 效果图2. 原理3. 源码参考这篇博客将介绍如何使用Python进行机器学习的文本情感分类(Text Emotions Classification)。 1. 效果图 训练文本及情感分类前5条数据如下: 训练过程及测试文本情感分类效果图如下: 可以看到 对文本“S…