基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)
👨🎓个人主页:研学社的博客
💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
文献来源:
本文首先研究了一种基于广义典型相关分析(CCA)的故障检测(FD)方法,旨在在可接受的误报率下最大限度地提高故障检测能力。更具体地说,生成两个残差信号,分别用于检测输入和输出子空间中的故障。两个残差信号的最小协方差是通过考虑输入和输出之间的相关性来实现的。考虑到广义CCA由于过程噪声的高斯假设而应用范围有限,提出了一种广义CCA与基于随机算法的阈值设置相结合的FD技术,并将其应用于高速列车的模拟牵引驱动控制系统。结果表明,与标准的广义CCAFD方法相比,所提方法能够显著提高检测性能。
📚2 运行结果
部分代码:
%% ----------------------- CCA algorithm ----------------------------------
[U, S, V, P,P_res, L,L_res] = cca_fun_static(In_trc,Out_trc);
%% *********************** building statistics for CCA-based FD ***********
%% ----------------------- statistic of CCA residual form 1----------------
% ~~~~~~~~~ for Q statistic
rs=[]; % residual signal
Omega = S(1:rank(S),1:rank(S));
for j = 1:N_free
te1 = P'*In_trc(:,j)-Omega*L'*Out_trc(:,j); % Q statistic
rs=[rs te1];
end
cov_rs = (N_free-1)^-1*rs*rs'; % covariance of Q
%% ----------------------- statistic of CCA residual form 1 from PPT -----
T2_rdin = [];
tempinv = (eye(size(Omega,1))-Omega^2); tempinv = diag(tempinv);
if ~isempty(P_res) % determine the P_res matrix is empty or not
tempeye = diag(eye(size(P_res,2)));
tempi = [tempinv; tempeye];
else
tempi = tempinv;
end
Inv_s = inv(diag(tempi)/(n_s-1));
for j = 1:N_fault
te1 = [P P_res]'*In_trfc(:,j)-S*[L L_res]'*Out_trfc(:,j); % residual L'y-\SigmaJ'u
te2 = te1'*Inv_s*te1; % for T2
T2_rdin=[T2_rdin te2];
end
alpha = 0.05; % significance level
Th_T2_cca_rd = chi2inv(1-alpha,size(Inv_s,1));
%% ----------------------- statistic of CCA residual form 2 from PPT -----
T2_rdin2 = [];
tempinv = (eye(size(Omega,1))-Omega^2); tempinv = diag(tempinv);
if ~isempty(L_res) % determine the L_res matrix is empty or not
tempeye = diag(eye(size(L_res,2)));
tempi = [tempinv; tempeye];
else
tempi = tempinv;
end
Inv_s2 = inv(diag(tempi)/(n_s-1));
for j = 1:N_fault
te1 = [L L_res]'*Out_trfc(:,j)-S'*[P P_res]'*In_trfc(:,j); % residual J'u-\Sigma'L'y
te2 = te1'*Inv_s2*te1; % for T2
T2_rdin2=[T2_rdin2 te2];
end
Th_T2_cca_rd2 = chi2inv(1-alpha,size(Inv_s2,1));
%% ========== detection results of CCA-based FD ===========================
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
figure
subplot(2,1,1)
plot_FD_result(T2_rdin,Th_T2_cca_rd,2,12,1);
ylabel('T2_{ccadin}');
title('Detection result of CCA','FontSize',12);
subplot(2,1,2)
plot_FD_result(T2_rdin2,Th_T2_cca_rd2,2,12,1);
ylabel('T2_{ccadin2}');
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]Zhiwen Chen, Steven X. Ding, Tao Peng, Chunhua Yang and Weihua Gui. Fault detection for non-Gaussian process using generalized canonical correlation analysis and randomized algorithms. IEEE Transactions on Industrial Electronics, 65(2): 1559-1567, 2018.
🌈4 Matlab代码实现
相关文章
- 监控系统-ELK
- javascript:监控video全屏时取消静音(chrome 107.0.5304.87)
- 【安富莱专题教程第3期】开发板搭建Web服务器,利用花生壳让电脑和手机可以外网远程监控
- Atitit 项目管理优化体系图 第4章 项目整合管理 开始 计划 执行 监控 变更 结束 第5章 项目范围管理 SOW工作说明书 成员通讯录 wbs大概模块级别 第6章 项目时间
- 基于KPCA 和 STFT 非侵入式负荷监控(Matlab代码实现)
- 基于MATLAB中雷达和视觉合成数据的目标级传感器融合(Matlab代码实现)
- 基于MATLAB的车牌识别系统研究(Matlab代码实现)
- 【MATLAB】数学建模没有基础怎么办,看过来一篇文章带你入门 matlab
- 【架构实践】怎样具体实现一个实时业务质量监控平台?
- 【数字信号处理】卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )
- 【MATLAB】matlab 文档使用 ( 文档查询 | 文档层次 | 自带搜索工具 | 帮助命令 | 学习导引 )
- 【云原生 | Kubernetes 系列】---Prometheus监控Nginx
- y84.第四章 Prometheus大厂监控体系及实战 -- prometheus告警机制进阶(十五)
- Matlab使用笔记(九):matlab实现交通流仿真/车感知/城市交通交叉路口
- python glances来监控linux服务器CPU 内存 IO使用
- 【语音编码】基于matlab ADPCM编解码(Matlab代码实现)
- Matlab Tips: 结构体递归式打印--Dump matlab struct content recursively
- zabbix-sender+crontab+nc实现无agent监控linux主机(二十六)
- Zabbix 监控 CPU 使用率