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

matlab 时频分析 短时傅里叶变换 STFT_第1张图片

你可能感兴趣的:(matlab 时频分析 短时傅里叶变换 STFT)