• 小波相干性显著性检验(MATLAB R2018A)


    交叉小波常被用于检测不同信号之间的相关性,其在时频域建立了不同信号之间的联系。对于两个时域信号,其交叉小波变换和交叉小波尺度谱如下:

    图片

    以轴承振动信号为例,利用正常轴承与故障轴承的振动信号、故障轴承和故障轴承的振动信号分别作连续交叉小波分析得到正常-故障信号小波相干谱、故障-故障信号小波相干谱。 正常- 故障小波相干谱中相干性较大的频带为轴承系统固有的振动信号分量频带,故障-故障小波相干谱中相干性较大的频带为轴承系统固有的振动信号分量频带和故障共振频带,由两个交叉谱对比分析可获得最优轴承故障共振频带分量。

    图片

                                          正常-故障信号小波相干图谱

    图片

    故障-故障信号小波相干图谱

    1. clc;clear all;close all
    2. % Signal specs
    3. fs = 1000; % Sampling frequency
    4. Flimits = [3 100]; % Frequency band of interest in Hz
    5. nv = 12; % Number of logarithmic divisions per octave of frquency
    6. % (a measure of granularity of the frequency axis, usually 12/16
    7. % is good enough)
    8. alpha = 0.05; % significance level
    9. %% Approach 1: This approach is similar to the Fourier-based coherence
    10. % Raw signals
    11. tv = linspace(-1.5,1.5,3000); % time axis in seconds
    12. x = rand(3000,25); % time vs. trial
    13. y = rand(3000,25); % time vs. trial
    14. [MsqC,SigVal,F,Coi,Phase] = WCoherence_trialAveraged(x,y,Flimits,fs,nv,alpha);
    15. % Remove edge effects
    16. for k = 1:size(MsqC,1)
    17. MsqC(k,F(k)
    18. Phase(k,F(k)
    19. end
    20. % Plot results
    21. figure;
    22. pcolor(tv,log2(F),MsqC); shading flat;
    23. fvals = [5 10 20 30 40 50 60 70 80 90];
    24. yticks(log2(fvals));
    25. yticklabels(fvals);
    26. ylabel('Frequency (Hz)');
    27. xlabel('Time (s)');
    28. set(gca,'FontSize',20);
    29. colormap winter; colorbar;
    30. hold on;
    31. ArrowDensity = [100,2]; % Density of arrows for phase indication in plot
    32. plotPhase(gca,Phase,tv,log2(F),ArrowDensity(1),ArrowDensity(2));
    33. % Create a binary matrix where values exceed the threshold
    34. binaryMatrix = MsqC > SigVal;
    35. contour(binaryMatrix, [1, 1], 'k'); % Contour around significant values
    36. %% Approach 2: This approach is used clasically in wavelet coherence
    37. % Raw signals
    38. tv = linspace(-5,5,10000); % time axis in seconds
    39. x = rand(1,10000); % 10 seconds of data
    40. y = rand(1,10000); % 10 seconds of data
    41. [MsqC,sigvalMC,sigvalTh,F,Coi,Phase] = WCoherence_Classic(x,y,Flimits,fs,nv,10,alpha,5,6/(2*pi));
    42. % Remove edge effects
    43. for k = 1:size(MsqC,1)
    44. MsqC(k,F(k)
    45. Phase(k,F(k)
    46. end
    47. % Plot results
    48. figure;
    49. pcolor(tv,log2(F),MsqC); shading flat;
    50. fvals = [5 10 20 30 40 50 60 70 80 90];
    51. yticks(log2(fvals));
    52. yticklabels(fvals);
    53. ylabel('Frequency (Hz)');
    54. xlabel('Time (s)');
    55. set(gca,'FontSize',20);
    56. colormap winter;
    57. hold on;
    58. ArrowDensity = [100,2]; % Density of arrows for phase indication in plot
    59. plotPhase(gca,Phase,tv,log2(F),ArrowDensity(1),ArrowDensity(2));
    60. % Create a binary matrix where values exceed the threshold
    61. binaryMatrix = MsqC > sigvalMC;
    62. contour(binaryMatrix, [1, 1], 'k'); % Contour around significant values (Monte-Carlo approach)
    63. binaryMatrix = MsqC > sigvalTh;
    64. %代码https://mbd.pub/o/bread/mbd-ZZmUlJdq
    65. contour(binaryMatrix, [1, 1], 'b'); % Contour around significant values (theoretical approach)

    图片

    图片

    工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

  • 相关阅读:
    Docker--初识Dockerfile
    c语言单元测试构建
    Java PrintStream.println方法具有什么功能呢?
    【弹性盒子】制作一个动画卡片
    程序员喜欢Linux系统的原因有哪些?
    .net core .net6 Form Cookie Login 认证
    设计模式--观察者模式
    01SpringBoot介绍
    Docker 面试题2则--取数据库连接数和docker-compose
    【NI-DAQmx入门】NI-DAQmx之MATLAB/SIMULINK支持
  • 原文地址:https://blog.csdn.net/weixin_39402231/article/details/139387722