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

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

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

故障-故障信号小波相干图谱
- 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)
- Phase(k,F(k)
- 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)
- Phase(k,F(k)
- 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等。
-
相关阅读:
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
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU