zoukankan      html  css  js  c++  java
  • matlab 时频分析(短时傅里叶变换、STFT)

    短时傅里叶变换,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)2πftf 是频率 )进行短时傅里叶变换,该模拟信号中有 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')

    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')

    这里选择的是 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')

    这里可以进一步对比 STFT(短时傅里叶变换)和 CWT(连续小波变换)在时频分析上的精细化刻画能力。

  • 相关阅读:
    Redis涉及的概念
    Redis高级教程
    Redis基础入门
    Java多线程面试题
    Java集合面试题
    Java集合基础
    Java基础面试题总结
    Zookeeper Basics
    GitLab基础入门
    阿里云ECS服务器Docker安装Tomcat过程记录
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9421434.html
Copyright © 2011-2022 走看看