基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)

简介: 基于典型相关分析的故障检测和过程监控算法研究(Matlab代码实现)

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



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



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


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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

文献来源:


96dfd82931c7d83ecf3c1680f0d2d407.png


本文首先研究了一种基于广义典型相关分析(CCA)的故障检测(FD)方法,旨在在可接受的误报率下最大限度地提高故障检测能力。更具体地说,生成两个残差信号,分别用于检测输入和输出子空间中的故障。两个残差信号的最小协方差是通过考虑输入和输出之间的相关性来实现的。考虑到广义CCA由于过程噪声的高斯假设而应用范围有限,提出了一种广义CCA与基于随机算法的阈值设置相结合的FD技术,并将其应用于高速列车的模拟牵引驱动控制系统。结果表明,与标准的广义CCAFD方法相比,所提方法能够显著提高检测性能。


📚2 运行结果


d6ab0df04a4e7aaec2600f126810f83c.png


部分代码:

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


相关文章
|
8天前
|
传感器 算法
ANC主动降噪理论及Matlab代码实现
ANC主动降噪理论及Matlab代码实现
|
12天前
|
搜索推荐 算法
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
【排序】数据结构——排序算法概念及代码详解(插入、冒泡、快速、希尔)
|
5天前
|
人工智能 算法 Java
java中经典算法代码整理
java中经典算法代码整理
16 0
|
5天前
|
算法 IDE 开发工具
c语言的经典算法代码
c语言进阶11-经典算法代码
|
6天前
|
算法
数据结构和算法常见的问题和代码
数据结构和算法常见的问题和代码
|
9天前
|
存储 算法 Java
面试高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 合集
面试高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 合集
|
1月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
1月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
1月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)