基于线调频小波变换的一维时间序列时频分析方法(MATLAB)

在机械故障诊断领域,振动信号的处理常采用以快速傅立叶变换为基础的相关分析、幅值分析、频谱分析等时域和频域分析方法。但经典的FFT存在固有缺点,即它虽然在频域范围内是完全局部化的,但是它不包含任何时域信息,因而不适于分析非平稳信号。近年来涌现的各种时频分析方法(短时傅立叶变换、Wigner-Ville分布、Cohen类时频分布、小波分析等)较好地解决了非平稳信号分析的问题 。小波分析又是其中运用最为成功的一种方法,具有良好的时频局部性、多尺度性和"数学显微"特性。但这种方法只适应于频率范围很窄的信号,不能满足设备振动信号的分析需要。

线调频小波变换源于19世纪20年代的光学研究,但将其作为信号处理的数学工具来研究,则只是最近几年的事。许多学者研究过采用基函数来表示和逼近信号的思想,用一系列的线性调频信号来逼近自然界中的各种信号,并提出了各种寻找与待分析信号最匹配的基函数的优化算法。线调频小波变换属于时间-频率-尺度变换,利用它作信号的谱估计,不仅具有小波变换谱估计方法高频域分辨率的优点,而且可以根据需要自由地选择尺度参数,谱估计值更准确有效,对非平稳信号的分析功能更加强大。线调频小波变换使用的时频分析网格除了时移、频移、尺度变化外,还有斜方向的拉伸与旋转变化,这些复杂形状的网格所提供的分析功能是短时傅立叶变换、小波变换等各种方法所无法企及的。

鉴于此,采用一种线调频小波变换对非平稳信号进行时频分析,运行环境为MATLAB R2018A。

Matlab 复制代码
for elec = 1:nChan  
    dataY = squeeze(data(elec,:)); % one sensor of data
    X=fft(dataY, Ly2);              % Fast Fourier transform
    Y=X.*H;                         % multiply power spectra (frequency-domain convolution)
    convDat=ifft(Y, Ly2, 2);        % Inverse fast Fourier transform
    convDat=convDat(:,1:1:Ly);      % Take just the first N elements
    if t_even==1
        wavDat(elec,:,:) = convDat(:,half_of_wavelet_size:end-half_of_wavelet_size); %remove half of wavelet from either side
    else
        wavDat(elec,:,:) = convDat(:,half_of_wavelet_size+1:end-half_of_wavelet_size); %remove half of wavelet from either side
    end
    %update progress bar
    prog=100*(elec/size(data,1));
    fprintf(1,'\b\b\b\b%3.0f%%',prog);
end
fprintf(1,'\n');

%format
tfRes.power = squeeze(reshape(abs(wavDat).^2,nChan,numel(freqs),nTimes,nTrls)); %power, reshape back
tfRes.phase = squeeze(reshape(angle(wavDat),nChan,numel(freqs),nTimes,nTrls)); %phase, reshape back
tfRes.freqs=freqs;
tfRes.times=0:1/Fs:((1/Fs)*nTimes)-(1/Fs);
tfRes.nsensor=nChan;
tfRes.ntrls=nTrls;
tfRes.Fs=Fs;
tfRes.cycles = cycles;
tfRes.method='wavelet';

完整代码:https://mbd.pub/o/bread/ZJqTk5Zs

tfRes.scale = 'linear';
  • 擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
相关推荐
铭keny9 分钟前
YOLO11 目标检测从安装到实战
人工智能·目标检测·目标跟踪
presenttttt11 分钟前
用Python和OpenCV从零搭建一个完整的双目视觉系统(四)
开发语言·python·opencv·计算机视觉
yi.Ist16 分钟前
数据结构 —— 键值对 map
数据结构·算法
每日出拳老爷子16 分钟前
[C#] 使用TextBox换行失败的原因与解决方案:换用RichTextBox的实战经验
开发语言·c#
s1533519 分钟前
数据结构-顺序表-猜数字
数据结构·算法·leetcode
半桔20 分钟前
【Linux手册】从接口到管理:Linux文件系统的核心操作指南
android·java·linux·开发语言·面试·系统架构
Coding小公仔22 分钟前
LeetCode 8. 字符串转换整数 (atoi)
算法·leetcode·职场和发展
GEEK零零七27 分钟前
Leetcode 393. UTF-8 编码验证
算法·leetcode·职场和发展·二进制运算
nightunderblackcat29 分钟前
新手向:实现ATM模拟系统
java·开发语言·spring boot·spring cloud·tomcat·maven·intellij-idea
开开心心就好31 分钟前
电脑息屏工具,一键黑屏超方便
开发语言·javascript·电脑·scala·erlang·perl