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

【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现

💥1 概述

数据包含取自模拟流程示例的二维数据集。此数据用于训练和测试内核 PCA 以进行故障检测。训练后,针对输出数据空间中的每个位置计算广泛用于故障检测的T2和Q统计指标,从而生成等高线图。然后将 2% 显著性水平检测限叠加在地图上,作为数据空间的正常(绿色)和错误(洋红色)区域之间的边界。

使用等高线图,可以将各种核类型和参数选择对正常和错误过程状态之间的决策边界的影响可视化。

📚2 运行结果

部分代码:

%% Get 2D data

close all; clc; tic;

if nargin == 0

load dataset.mat p;

train = p{1}; test = p{2};

% Kernel types and parameters:

ktype = 'rbf'; kpar = 1; % RBF kernel

%ktype = 'rbf'; kpar = 10; % RBF kernel

%ktype = 'rbf'; kpar = 0.9; % RBF kernel

%ktype = 'rbfpoly'; kpar = [1 1 0.65]; % mixed kernel

%ktype = 'poly'; kpar = 2; % polynomial kernel

%ktype = 'imquad'; kpar = 10; % inverse multiquadric kernel

%ktype = 'cauchy'; kpar = 5; % Cauchy kernel

end

%lax = [-15 15 -15 15];

lax = [-4 10 -3 6]; % Axes limits

N = length(train); M = length(test);

z0T = train; z1T = test; % Training and Test data

[xx,yy] = meshgrid(lax(1):0.05:lax(2),... % Meshgrid for contours

lax(3):0.05:lax(4));

z2T = [xx(:) yy(:)]; L = length(z2T); % Vectorize meshgrid points

K.type = ktype; K.p = kpar; % Kernel type and parameters

set(0,'defaultfigurecolor',[1 1 1]); % Set fig color to w

conf = 0.99; % Significance level (*100%)

% Normalize 2D Data

zm = mean(z0T); zs = std(z0T);

z0 = (z0T - zm(ones(N,1),:))./zs(ones(N,1),:); % Normalize training z

z1 = (z1T - zm(ones(N,1),:))./zs(ones(M,1),:); % Normalize test z

z2 = (z2T - zm(ones(L,1),:))./zs(ones(L,1),:); % Normalize surf z

%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% KERNEL PRINCIPAL COMPONENTS ANALYSIS %

[K0c,K0,U0] = kerneltrain(z0,K); % Populate kernel matrix

K1c = kerneltest(z1,z0,K0,U0,K); % Project test data to RKHS

K2c = kerneltest(z2,z0,K0,U0,K); % Project surf data to RKHS

[V,D] = eig(K0c/N); % Eigenvalue decomposition

[S,sj] = sort(diag(D),'descend'); % Sort eigenvalues

V = V(:,sj); S = S'; % Re-arrange eigenvectors

S(S < 1e-7) = []; % Remove eigenvalues <= 0

P = V(:,1:length(S))*diag(S.^-0.5); % Projection matrix

if ~isreal(S)

disp('Complex eigenvalues detected.'); % Warn about complex eigs

end

%% Perform KPCA Monitoring

CS = cumsum(S)/sum(S)*100;

RP = find(CS >= 99.9,1); % Get eigenvalues by %CPV

disp([num2str(RP) ' principal'...

' components chosen.']);

t0 = K0c*P(:,1:RP); % Kernel subspace (train)

t1 = K1c*P(:,1:RP); % Kernel subspace (test)

t2 = K2c*P(:,1:RP); % Kernel subspace (surf)

T2 = sum((t0.^2)./S(ones(N,1),1:RP),2); % T2 statistics (train)

t0n = K0c*P; % Full kernel space

Q = abs(sum(t0n.^2,2) - sum(t0.^2,2)); % Q statistics (train)

if strcmp(ktype,'rbf') == 1

fprintf('\n At infinite fault magnitude:\n');

U1 = ones(1,N)/N;

tt = U1*K0*(U0 - eye(N))*P(:,1:RP);

fprintf(' T2 limit: %.2f\n',...

sum((tt.^2)./S(1:RP),2)); % Limit of T2 for RBF

tu = U1*K0*(U0 - eye(N))*P;

fprintf(' Q limit: %.2f\n\n',...

abs(sum(tu.^2,2) - sum(tt.^2,2))); % Limit of Q for RBF

end

T2t = sum((t1.^2)./S(ones(M,1),1:RP),2); % T2 statistics (test)

T2u = sum((t2.^2)./S(ones(L,1),1:RP),2); % T2 statistics (surf)

t1n = K1c*P; t2n = K2c*P;

Qt = abs(sum(t1n.^2,2) - sum(t1.^2,2)); % Q statistics (test)

Qu = abs(sum(t2n.^2,2) - sum(t2.^2,2)); % Q statistics (surf)

%% Plot monitoring charts

figure(3); subplot(211);

semilogy(1:N,T2,'b',1:M,T2t,'m','linewidth',1.2); % T2 monitoring chart

xlabel('Time'); ylabel('T^2'); subplot(212);

semilogy(1:N,Q,'b',1:M,Qt,'m','linewidth',1.2); % Q monitoring chart

xlabel('Time'); ylabel('Q');

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1] K.E.S. Pilario, Y. Cao, and M. Shafiee. Mixed Kernel Canonical Variate Dissimilarity Analysis for Incipient Fault Monitoring in Nonlinear Dynamic Processes. Comput. and Chem. Eng., 123, 143-154. 2019. doi: 10.1016/j.compchemeng.2018.12.027

🌈4 Matlab代码实现

相关文章:

【故障检测】基于 KPCA 的故障检测【T2 和 Q 统计指数的可视化】(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …...

从“捐赠openEuler”到“向openEuler捐赠”,openEuler生态走入高速发展期

【中国&#xff0c;上海&#xff0c;2023年4月21日】openEuler Developer Day 2023于4月20-21日在线上和线下同步举办。本次大会由开放原子开源基金会指导&#xff0c;中国软件行业协会、openEuler社区、边缘计算产业联盟共同主办&#xff0c;以“万涓汇流&#xff0c;奔涌向前…...

ambari的kafka服务开启sasl

添加 sasl 配置⽂件 集群部署 Kafka2.2下载地址 http://archive.apache.org/dist/kafka/2.2.1/kafka_2.11-2.2.1.tgz 解压安装包 tar -zxvf kafka_2.11-2.2.1.tgz 部署略 ambari 数据kafka服务 在kafka的conf目录下创建sasl_conf目录,将kafka_client_jaas.conf/kafka_se…...

改善内部客户服务的 3 个技巧

在当今世界&#xff0c;许多公司都专注于改善客户关系管理&#xff0c;公司管理层面临的挑战是他们不仅拥有外部客户&#xff0c;员工也是有痛点和需求的内部客户。正如糟糕的客户服务会导致客户流失一样&#xff0c;糟糕的内部客户服务会增加员工流动率。在当今瞬息万变的就业…...

使用Apache POI的SXSSFworkbook实现大量数据导出到Excel文件

Apache POI是一个开源的、用来读写微软Excel文件的Java工具包&#xff0c;一般用来读取Excel文件中的数据或者将数据导出到Excel文件。HSSFWorkbook用来处理早期版本的Excel文件&#xff08;xls格式&#xff09;&#xff0c;而XSSFWorkbook用来处理新版本Excel文&#xff08;xl…...

【技术选型】Java 定时任务

文章目录 背景一、基础1.1 Cron表达式1.2 定时任务的三大组成部分 二、Java做定时任务的技术方案比较2.1、JDK seelp实现定时任务2.2、JDK Timer & TimerTask 实现定时任务2.3、JDK ScheduledExecutorService2.4、Quartz框架2.5、Spring Task 中的 schedule2.6、Elastic-Jo…...

让你立刻学会指针

☃️个人主页&#xff1a;fighting小泽 &#x1f338;作者简介&#xff1a;目前正在学习C语言和数据结构 &#x1f33c;博客专栏&#xff1a;C语言学习 &#x1f3f5;️欢迎关注&#xff1a;评论&#x1f44a;&#x1f3fb;点赞&#x1f44d;&#x1f3fb;留言&#x1f4aa;&am…...

重塑元宇宙体验!元宇宙实时云渲染解决方案来了

元宇宙作为人工智能、云计算和数字孪生等前沿技术的结合体&#xff0c;近年来越发受到各大企业重视。 元宇宙的应用场景层出不穷&#xff0c;不仅包括营销推广场景&#xff0c;还有品牌活动和电商销售&#xff0c;能有效提升品宣和商业转化效果。 元宇宙也具有极大的建设价值…...

Node【Global全局对象】

文章目录 &#x1f31f;前言&#x1f31f;Global全局对象&#x1f31f;Global对象属性与方法&#x1f31f;Global对象属性&#x1f31f;process&#x1f31f;Buffer类&#x1f31f;console &#x1f31f;写在最后 &#x1f31f;前言 哈喽小伙伴们&#xff0c;新的专栏 Node 已…...

【技术】《Netty》从零开始学netty源码(四十一)之PoolChunk

PoolChunk 我们再回顾以下netty中与内存相关的类&#xff1a; 前面我们已经分析了PoolSubpag&#xff0c;本章我们分析PoolChunk,先看下它的属性值&#xff1a; 为了更好的理解这些属性值&#xff0c;我们结合它的构造函数来理解&#xff0c;具体的源码如下&#xff1a; 其…...

新建虚拟机更改ip(连接xshell)

# 查看网络设备 [rootcentos79 ~]# nmcli device DEVICE TYPE STATE CONNECTION ens32 ethernet 已连接 ens32 ens33 ethernet 已连接 ens33 virbr0 bridge 已连接 virbr0 lo loopback 未托管 -- # 查看…...

什么是VBST和PVST?两者有啥区别?

在计算机网络中&#xff0c;VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将局域网划分为多个逻辑上独立的子网的技术&#xff0c;它可以帮助网络管理员更好地管理网络资源。 在VLAN技术中&#xff0c;STP&#xff08;Spanning Tree P…...

记录-JavaScript常规加密技术

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 当今Web开发中&#xff0c;数据安全是一个至关重要的问题&#xff0c;为了确保数据的安全性&#xff0c;我们需要使用加密技术。JavaScript作为一种客户端编程语言&#xff0c;可以很好地为数据进行加…...

二十三、高级网络技术及应用——BFD解析

文章目录 前言一、BFD 简介1、概述&#xff1a;2、作用&#xff1a; 二、静态路由调用 BFD1、配置静态 BFD2、配置动态 BFD 三、OSPF联动BFD四、BFD 单臂回声&#xff08;one arm echo&#xff09; 前言 BFD&#xff1a;Bidirectional Forwarding Detection&#xff0c;双向转…...

大家经常说的java八股文到底是什么?让我来总结一下吧!

八股文问题集合 面试必看java八股文 问题正在收录中&#xff0c;累了休息一会&#xff0c;如果有需要请&#xff0c;先关注&#xff0c;这几天会更帖子&#xff0c;答案后续补上 文章目录 八股文问题集合问题正在收录中&#xff0c;累了休息一会&#xff0c;如果有需要请&#…...

C++备忘录模式实践:轻松实现撤销与恢复功能

目录标题 引言&#xff08;Introduction&#xff09;备忘录模式定义及核心概念&#xff08;Memento Pattern Definition and Core Concepts&#xff09;备忘录模式的定义&#xff08;Definition of Memento pattern&#xff09;备忘录模式的主要角色&#xff08;Key roles in M…...

如何选择CDN加速平台?

现如今全球CDN市场规模逐年攀升&#xff0c;在2017年全球CDN市场规模约为75亿美元,到2021年增长到200亿美元左右。我国CDN行业同样保持高速发展,自2017年的135亿元增长到2022年的300亿元左右。但是国内的CDN市场规模仅为全球市场的15%-20%&#xff0c;海外CDN市场空间巨大。 接…...

其实苹果知道自己离不开中国制造,因此悄悄给自己留了后路

苹果在加速离开中国&#xff0c;不过从苹果的做法却又可以看到它其实很清醒地认识到无法离开中国制造&#xff0c;因此它在力推印度制造的时候&#xff0c;其实并没拼尽全力&#xff0c;深刻认识到印度制造和印度市场与中国的差距。 一、印度制造和印度市场与中国的差距 2022年…...

必用WhatsApp营销的4个理由

WhatsApp是世界上最受欢迎的消息传递应用程序。每天有1万新用户加入WhatsApp。各种规模的公司都利用该平台与世界各地的客户进行有效的沟通&#xff0c;这要归功于其广泛的覆盖范围、用户友好的设计和安全的端到端加密。因此&#xff0c;WhatsApp聊天机器人迅速普及。 1.为您的…...

Python从入门到精通9天(异常的处理)

异常处理 异常处理语句多个异常raise关键字常见的异常类型自定义异常 异常处理语句 在了解异常处理之前&#xff0c;我们先对它的语句进行说明&#xff0c;如下&#xff1a; try&#xff1a;表示测试代码块以查找错误 except&#xff1a;表示处理错误 finally&#xff1a;表…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...