matlab 時頻分析 短時傅立葉變換 STFT
阿新 • • 發佈:2018-11-08
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
短時傅立葉變換,short-time fourier transformation,有時也叫加窗傅立葉變換,時間視窗使得訊號只在某一小區間內有效,這就避免了傳統的傅立葉變換在時頻區域性表達能力上的不足,使得傅立葉變換有了區域性定位的能力。
1. spectrogram:matlab 下的 stft
How can I compute a short-time Fourier transform (STFT) in MATLAB?
stft 不同於 ft 之處在於,多了時間的概念,對訊號 y=sin(128⋅π⋅t)+sin(256⋅π⋅t) 是頻率 )進行短時傅立葉變換,該模擬訊號中有 64 和 128 兩種。
fs = 1000;t = 0:1/fs:2;y = sin(128*pi*t) + sin(256*pi*t); figure;win_sz = 128 ;han_win = hanning(win_sz); % 選擇海明窗nfft = win_sz;nooverlap = win_sz - 1;[S, F, T] = spectrogram(y, window, nooverlap, nfft, fs);imagesc(T, F, log10(abs(S)))set(gca, 'YDir', 'normal')xlabel('Time (secs)')ylabel('Freq (Hz)')title('short time fourier transform spectrum')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
2. cwt:連續小波變換
Time-Frequency Analysis of Modulated Signals
小波變換進一步拓展了時頻區域性分析的能力。
[cfs,f] = cwt(quadchirp,'bump',fs);helperCWTTimeFreqPlot(cfs,tquad,f,'surf','CWT of Quadratic Chirp','Seconds','Hz')
- 1
- 2
這裡選擇的是 bump 型小波,選擇該型別的原因在於,當訊號震盪劇烈,且更關注訊號區域性瞬變的時頻分析。
load quadchirp;fs = 1000;[S,F,T] = spectrogram(quadchirp,100,98,128,fs);helperCWTTimeFreqPlot(S,T,F,'surf','STFT of Quadratic Chirp','Seconds','Hz')
- 1
- 2
- 3
- 4
這裡可以進一步對比 STFT(短時傅立葉變換)和 CWT(連續小波變換)在時頻分析上的精細化刻畫能力。