基于线调频小波变换的一维时间序列时频分析方法(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等。
相关推荐
米小虾5 分钟前
Loop Engineering —— 循环的设计与自主执行
人工智能·agent
米小虾18 分钟前
Harness Engineering —— 系统的安全护栏
人工智能·agent
火山引擎开发者社区33 分钟前
积分当钱花,火山引擎开发者激励计划首月消费双倍回馈
人工智能
aqi001 小时前
15天学会AI应用开发(十)把文本嵌入模型换成国产模型
人工智能·python·ai编程
MobotStone2 小时前
为什么在AI时代,“好奇心”成了最值钱的能力?
人工智能
武子康2 小时前
调查研究-200 llama.cpp b9754:一次很小但很关键的 Agent 工具调用修复
人工智能·agent·llama
Ralph_Salar3 小时前
从0到1搭建AI智能支付风控助手Stage1-RAG知识库升级 — 元数据让检索更精准
人工智能
武子康3 小时前
调查研究-199 MCP Zero-Touch OAuth:为什么它是 MCP 进入企业生产的关键门槛?
人工智能·agent·mcp