基于主成分分析(PCA)的信号特征可视化

将原始真实信号和生成的信号组合在一个数据矩阵中。使用辅助函数 helperExtractFeature 提取特征,包括常见信号统计信息,例如均值和方差以及频谱特征。

idxGenerated = 1:numTests;
idxReal = numTests+1:numTests+size(flow,2);

XGeneratedNew = squeeze(extractdata(gather(dlXGeneratedNew)));
x = [XGeneratedNew single(flow)];

features = zeros(size(x,2),14,'like',x);

for ii = 1:size(x,2)
    features(ii,:) = helperExtractFeature(x(:,ii));
end

每行对应一个信号的特征。features

修改生成的正常和故障信号以及实际正常和故障信号的标签。

L = [squeeze(TNew)+2;labels.'];

标签现在具有以下定义:

  • 1 — 生成的健康信号

  • 2 — 生成的故障信号

  • 3 — 真正的健康信号

  • 4 — 真正的故障信号

  • 对真实信号的特征执行 PCA,并将生成信号的特征投射到同一个 PCA 子空间。 

  • % PCA via svd
    featuresReal = features(idxReal,:);
    mu = mean(featuresReal,1);
    [~,S,W] = svd(featuresReal-mu);
    S = diag(S);
    Y = (features-mu)*W;

    从奇异向量来看,前三个奇异值占 中能量的 99%。您可以通过利用前三个主成分来可视化信号特征。

  • sum(S(1:3))/sum(S)
    ans = single
        0.9923
    

    使用前三个主成分绘制所有信号的特征。在PCA子空间中,生成信号的分布与真实信号的分布相似。

  • idxHealthyR = L==1;
    idxFaultR = L==2;
    
    idxHealthyG = L==3;
    idxFaultG = L==4;
    
    pp = Y(:,1:3);
    
    figure
    scatter3(pp(idxHealthyR,1),pp(idxHealthyR,2),pp(idxHealthyR,3),'o')
    xlabel('1st Principal Component')
    ylabel('2nd Principal Component')
    zlabel('3rd Principal Component')
    hold on
    scatter3(pp(idxFaultR,1),pp(idxFaultR,2),pp(idxFaultR,3),'d')
    scatter3(pp(idxHealthyG,1),pp(idxHealthyG,2),pp(idxHealthyG,3),'s')
    scatter3(pp(idxFaultG,1),pp(idxFaultG,2),pp(idxFaultG,3),'+')
    view(-10,20)
    legend('Real healthy','Real faulty','Generated healthy','Generated faulty', ...
        'Location','Best')
    hold off

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_69478650

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值