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

152 篇文章 33 订阅
125 篇文章 46 订阅

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

图片

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

图片

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

图片

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

clc;clear all;close all
% Signal specs
fs = 1000;                    % Sampling frequency
Flimits = [3 100];            % Frequency band of interest in Hz
nv = 12;                      % Number of logarithmic divisions per octave of frquency 
                              % (a measure of granularity of the frequency axis, usually 12/16
                              % is good enough)
alpha = 0.05;                  % significance level


%% Approach 1: This approach is similar to the Fourier-based coherence 
% Raw signals
tv = linspace(-1.5,1.5,3000); % time axis in seconds
x = rand(3000,25); % time vs. trial
y = rand(3000,25); % time vs. trial
[MsqC,SigVal,F,Coi,Phase] = WCoherence_trialAveraged(x,y,Flimits,fs,nv,alpha);


% Remove edge effects
for k = 1:size(MsqC,1)
    MsqC(k,F(k)<Coi) = NaN;
    Phase(k,F(k)<Coi) = NaN;
end


% Plot results
figure;
pcolor(tv,log2(F),MsqC); shading flat;
fvals  = [5 10 20 30 40 50 60 70 80 90];
yticks(log2(fvals));
yticklabels(fvals);
ylabel('Frequency (Hz)');
xlabel('Time (s)');
set(gca,'FontSize',20);
colormap winter; colorbar;
hold on;
ArrowDensity = [100,2]; % Density of arrows for phase indication in plot
plotPhase(gca,Phase,tv,log2(F),ArrowDensity(1),ArrowDensity(2)); 
% Create a binary matrix where values exceed the threshold
binaryMatrix = MsqC > SigVal;
contour(binaryMatrix, [1, 1], 'k'); % Contour around significant values


%% Approach 2: This approach is used clasically in wavelet coherence
% Raw signals
tv = linspace(-5,5,10000); % time axis in seconds
x = rand(1,10000); % 10 seconds of data
y = rand(1,10000); % 10 seconds of data 
[MsqC,sigvalMC,sigvalTh,F,Coi,Phase] = WCoherence_Classic(x,y,Flimits,fs,nv,10,alpha,5,6/(2*pi));


% Remove edge effects
for k = 1:size(MsqC,1)
    MsqC(k,F(k)<Coi) = NaN;
    Phase(k,F(k)<Coi) = NaN;
end


% Plot results
figure;
pcolor(tv,log2(F),MsqC); shading flat; 
fvals  = [5 10 20 30 40 50 60 70 80 90];
yticks(log2(fvals));
yticklabels(fvals);
ylabel('Frequency (Hz)');
xlabel('Time (s)');
set(gca,'FontSize',20);
colormap winter;
hold on;
ArrowDensity = [100,2]; % Density of arrows for phase indication in plot
plotPhase(gca,Phase,tv,log2(F),ArrowDensity(1),ArrowDensity(2));
% Create a binary matrix where values exceed the threshold
binaryMatrix = MsqC > sigvalMC;
contour(binaryMatrix, [1, 1], 'k'); % Contour around significant values (Monte-Carlo approach)
binaryMatrix = MsqC > sigvalTh;
%代码https://mbd.pub/o/bread/mbd-ZZmUlJdq
contour(binaryMatrix, [1, 1], 'b'); % Contour around significant values (theoretical approach)

图片

图片

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

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python小波相干分析是一种用于研究两个时间序列之间相关性的方法。在Python中,可以使用多个包来实现小波相干分析,如Pyleoclim和pycwt。Pyleoclim是一个用于古气候数据处理和分析的包,而pycwt是一个用于小波分析的包。通过调用相应的函数和方法,可以进行小波相干分析并可视化结果。 在Pyleoclim中,可以使用wavelet_coherence方法进行小波相干分析。该方法接受两个时间序列作为输入,并返回它们之间的相干性。通过调用wavelet_coherence方法并传入相应的参数,可以得到小波相干结果。可以使用plot方法将结果可视化并展示相干性图。 在pycwt中,也可以使用相应的方法进行小波相干分析。通过调用相应的函数和方法,可以计算小波相干谱和小波交叉谱,并得到相关性和相位差等信息。使用这些结果可以了解两个时间序列在不同周期上的相关性,并进行进一步的分析和解释。 需要注意的是,在进行小波相干分析时,需要提前安装相应的包,并且了解如何使用这些包中的函数和方法。可以参考相应的文档和教程来学习和理解如何进行小波相干分析,并根据具体需求进行相应的操作和解释。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python 小波分析](https://blog.csdn.net/kbasg/article/details/131230687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python实现小波相干和小波交叉](https://blog.csdn.net/weixin_45577825/article/details/131231760)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哥廷根数学学派

码字不易,且行且珍惜

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

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

打赏作者

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

抵扣说明:

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

余额充值