在機械故障診斷領域,振動信號的處理常采用以快速傅立葉變換為基礎的相關分析、幅值分析、頻譜分析等時域和頻域分析方法。但經典的FFT存在固有缺點,即它雖然在頻域范圍內是完全局部化的,但是它不包含任何時域信息,因而不適于分析非平穩信號。近年來涌現的各種時頻分析方法(短時傅立葉變換、Wigner-Ville分布、Cohen類時頻分布、小波分析等)較好地解決了非平穩信號分析的問題?。小波分析又是其中運用最為成功的一種方法,具有良好的時頻局部性、多尺度性和“數學顯微”特性。但這種方法只適應于頻率范圍很窄的信號,不能滿足設備振動信號的分析需要。
線調頻小波變換源于19世紀20年代的光學研究,但將其作為信號處理的數學工具來研究,則只是最近幾年的事。許多學者研究過采用基函數來表示和逼近信號的思想,用一系列的線性調頻信號來逼近自然界中的各種信號,并提出了各種尋找與待分析信號最匹配的基函數的優化算法。線調頻小波變換屬于時間-頻率-尺度變換,利用它作信號的譜估計,不僅具有小波變換譜估計方法高頻域分辨率的優點,而且可以根據需要自由地選擇尺度參數,譜估計值更準確有效,對非平穩信號的分析功能更加強大。線調頻小波變換使用的時頻分析網格除了時移、頻移、尺度變化外,還有斜方向的拉伸與旋轉變化,這些復雜形狀的網格所提供的分析功能是短時傅立葉變換、小波變換等各種方法所無法企及的。
鑒于此,采用一種線調頻小波變換對非平穩信號進行時頻分析,運行環境為MATLAB R2018A。
for elec = 1:nChan dataY = squeeze(data(elec,:)); % one sensor of dataX=fft(dataY, Ly2); % Fast Fourier transformY=X.*H; % multiply power spectra (frequency-domain convolution)convDat=ifft(Y, Ly2, 2); % Inverse fast Fourier transformconvDat=convDat(:,1:1:Ly); % Take just the first N elementsif t_even==1wavDat(elec,:,:) = convDat(:,half_of_wavelet_size:end-half_of_wavelet_size); %remove half of wavelet from either sideelsewavDat(elec,:,:) = convDat(:,half_of_wavelet_size+1:end-half_of_wavelet_size); %remove half of wavelet from either sideend%update progress barprog=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/ZJqTk5ZstfRes.scale = 'linear';
- 擅長領域:現代信號處理,機器學習,深度學習,數字孿生,時間序列分析,設備缺陷檢測、設備異常檢測、設備智能故障診斷與健康管理PHM等。