【故障检测】基于 KPCA 的故障检测研究(Matlab代码实现)

简介: 【故障检测】基于 KPCA 的故障检测研究(Matlab代码实现)

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



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



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


📋 📋 📋 本文目录如下: 🎁 🎁 🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

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


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


📚2 运行结果


1febb2b4629ade1a6eb46a4acba2f8d8.png


5b6e9f0fef822973c2b915038846c11e.png


eff6f829a77806e4bf870169f7ae062b.png


ab249c558fce10a8b5d7de5ef2cd021e.png


1a1c01d976a6f394699a0f0f33066a60.png


87ba7a510f70cf57a2be69f1ff22760d.png


部分代码:

%% 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代码实现


相关文章
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于MSER和HOG特征提取的SVM交通标志检测和识别算法matlab仿真
### 算法简介 1. **算法运行效果图预览**:展示算法效果,完整程序运行后无水印。 2. **算法运行软件版本**:Matlab 2017b。 3. **部分核心程序**:完整版代码包含中文注释及操作步骤视频。 4. **算法理论概述**: - **MSER**:用于检测显著区域,提取图像中稳定区域,适用于光照变化下的交通标志检测。 - **HOG特征提取**:通过计算图像小区域的梯度直方图捕捉局部纹理信息,用于物体检测。 - **SVM**:寻找最大化间隔的超平面以分类样本。 整个算法流程图见下图。
|
2月前
|
运维 算法
基于Lipschitz李式指数的随机信号特征识别和故障检测matlab仿真
本程序基于Lipschitz李式指数进行随机信号特征识别和故障检测。使用MATLAB2013B版本运行,核心功能包括计算Lipschitz指数、绘制指数曲线、检测故障信号并标记异常区域。Lipschitz指数能够反映信号的局部动态行为,适用于机械振动分析等领域的故障诊断。
|
2月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于GA-PSO-SVM算法的混沌背景下微弱信号检测matlab仿真
本项目基于MATLAB 2022a,展示了SVM、PSO、GA-PSO-SVM在混沌背景下微弱信号检测中的性能对比。核心程序包含详细中文注释和操作步骤视频。GA-PSO-SVM算法通过遗传算法和粒子群优化算法优化SVM参数,提高信号检测的准确性和鲁棒性,尤其适用于低信噪比环境。
|
4月前
|
监控 算法 数据安全/隐私保护
基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真
该算法基于Matlab 2022a,利用视觉工具箱和背景差法实现行人检测与轨迹跟踪,通过构建背景模型(如GMM),对比当前帧与模型差异,识别运动物体并统计行走习惯,包括轨迹、速度及停留时间等特征。演示三维图中幅度越大代表更常走的路线。完整代码含中文注释及操作视频。
|
5月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
253 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
5月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
150 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
5月前
|
机器学习/深度学习 数据采集 算法
基于深度学习网络的USB摄像头实时视频采集与火焰检测matlab仿真
本项目使用MATLAB2022a实现基于YOLOv2的火焰检测系统。通过USB摄像头捕捉火焰视频,系统实时识别并标出火焰位置。核心流程包括:视频采集、火焰检测及数据预处理(图像标准化与增强)。YOLOv2模型经特定火焰数据集训练,能快速准确地识别火焰。系统含详细中文注释与操作指南,助力快速上手。
|
5月前
|
机器学习/深度学习 监控 算法
基于深度学习网络的人员行为视频检测系统matlab仿真,带GUI界面
本仿真展示了基于GoogLeNet的人员行为检测系统在Matlab 2022a上的实现效果,无水印。GoogLeNet采用创新的Inception模块,高效地提取视频中人员行为特征并进行分类。核心程序循环读取视频帧,每十帧执行一次分类,最终输出最频繁的行为类别如“乐队”、“乒乓球”等。此技术适用于智能监控等多个领域。
79 4
|
5月前
|
存储 Serverless
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
124 1
|
5月前
|
算法
基于IEEE802.11g标准的OFDM信号帧检测matlab仿真
此项目旨在应对无线信号识别挑战,利用MATLAB/Simulink开发IEEE 802.11g OFDM信号识别算法。通过对标准的深入研究,设计并计算PLCP前导码数据,采用信号相关性进行信号鉴定。项目构建了完整的发射机模型,在AWGN信道下评估性能。通过生成特定的短训和长训序列,实现帧头检测,并模拟真实信号传输。测试使用MATLAB 2022a版本,展示了信号生成与识别的关键步骤及结果。