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

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

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

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

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