短时傅里叶变换

傅里叶变换形象解释
短时傅里叶变换原理

短时傅里叶变换(STFT)

  1. 什么是短时傅里叶变换?
    在傅里叶变换的基础上,套用窗函数。
    在这里插入图片描述
  2. 示意图
    在这里插入图片描述
    左图为傅里叶变换,可以观察整个时域上频率分布情况;右图为短时傅里叶变换,将时域进行了分割,可以观察某一时段上的频率分布情况,时间轴每格的长度即为窗函数的window length。
  3. 时间频率参数选取的关系
    在这里插入图片描述
    如左图,若横轴(时间)共1.2s,纵轴(频率)共50Hz,横轴划分为12格,每格0.1s,纵轴划分为两格,每格25Hz;右图横轴每格0.3s,纵轴每格约8Hz。无论怎样划分,两图中每个方块的面积是相同的,且横轴划分格数越少(如右图,即选取的数据点数多),频率划分越细(如右图,相比左图划分两格,右图纵轴共6格)。
    因此可得,时间轴分辨率与频率分辨率成反比。时间轴分辨率低(选取点数少),则频率分辨率高(如右图,能细致观察频率但时间轴无法准确估计);反之频率分辨率低(左图,时间轴可准确估计但频率只能观察0-25和25-50Hz两部分)。
  4. 短时傅里叶变换表示
    以一个频率从20Hz至100Hz随时间线性叠加的信号为例:

时域图形:
在这里插入图片描述

普通FFT:
在这里插入图片描述

此时并不能判断该信号的频域特性,似乎各个频率都有分布。

但使用短时傅里叶变换后,即可得出该信号特征:
在这里插入图片描述

短时傅里叶变换输出为三维图形,分别为时间、频率、强度三个轴(颜色即为对应时间、频率下的信号强度),时间频率轴上可明显观察到该信号的频率成分,随时间逐渐由20Hz线性增加到100Hz。

  1. matlab代码实现
    matlab集成了短时傅里叶变换函数:
[s,f,t] = spectrogram(x,window,noverlap,f,fs)
% s为二维矩阵,大小为f*t;其中f为频率,t为时间
% 由于s为复数,实际使用时一般再增加一行求幅值代码
[spec,faxis,taxis]=spectrogram(data,hamming(nfft),noverlap,nfft,samplerate);
Mag=abs(spec);     % get spectrum magnitude
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值