1. 程式人生 > >matlab 時頻分析 短時傅立葉變換 STFT

matlab 時頻分析 短時傅立葉變換 STFT

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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(連續小波變換)在時頻分析上的精細化刻畫能力。

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述