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

欢迎来到本博客 ❤️ ❤️


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


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

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

1 概述

文献来源:

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

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

2 运行结果

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

部分代码:

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

你可能感兴趣的:(电力系统,matlab)