目录
2.短时傅里叶变换(Short-time Fourier Transform,STFT)
信号处理基础——傅里叶变换与短时傅里叶变换
1.FT与STFT概述
对于大多数信号而言, 傅立叶分析绝对是非常有用的,因为频率分析在大多数情况下都非常重要。 那么为什么我们还需要研究短时傅里叶变换呢(STFT)?
原因是因为傅立叶分析有一个非常严重的缺点, 在将信号从时间域变换到频率域去的时候,把时间信息丢失了。 当我们在用傅立叶变化去分析一个具体信号的时候, 我们不知道哪个频率是对应在哪个时间点出现的,在哪个时间点消失的。
如果一个信号的频率并不随着时间变化, 那么我们称它为平稳信号。 那么知道哪一个频率的信号在哪一个时间点出现的就不那么重要了。 可是如果现实生活中我们研究的大多数信号都是非平稳信号,他们都许多非常短暂变化的特性, 这些特点对于我们信号分析的特点, 傅立叶分析并不适合去做这种分析,而短时傅里叶变换则可以。

如上图所示,最上边的是频率始终不变的平稳信号。而下边两个则是频率随着时间改变的非平稳信号,它们同样包含和最上信号相同频率的四个成分。做FFT后,我们发现这三个时域上有巨大差异的信号,频谱(幅值谱)却非常一致。尤其是下边两个非平稳信号,我们从频谱上无法区分它们,因为它们包含的四个频率的信号的成分确实是一样的,只是出现的先后顺序不同。
可见,傅里叶变换处理非平稳信号有天生缺陷。它只能获取一段信号总体上包含哪些频率的成分,但是对各成分出现的时刻并无所知。因此时域相差很大的两个信号,可能频谱图一样。
然而平稳信号大多是人为制造出来的,自然界的大量信号几乎都是非平稳的,所以在比如生物医学信号分析等领域的论文中,基本看不到单纯傅里叶变换这样naive的方法。
2.短时傅里叶变换(Short-time Fourier Transform,STFT)
一个简单可行的方法就是——加窗。 “把整个时域过程分解成无数个等长的小过程,每个小过程近似平稳,再傅里叶变换,就知道在哪个时间点上出现了什么频率了。”这就是短时傅里叶变换。
3.spectrogram函数
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs) %有返回值
spectrogram(x,window,noverlap,nfft,fs,'yaxis') %无返回值调用,直接输出频谱图
matlab中的spectrogram函数来做短时傅里叶变换,下面是其参数的解释。
语法:
[S,F,T,P]=spectrogram(x,window,noverlap,nfft,fs)
[S,F,T,P]=spectrogram(x,window,noverlap,F,fs)
说明:当使用时无输出参数,会自动绘制频谱图;有输出参数,则会返回输入信号的短时傅里叶变换。当然也可以从函数的返回值S,F,T,P绘制频谱图,具体参见例子。
参数:
x---输入信号的向量。默认情况下,即没有后续输入参数,x将被分成8段分别做变换处理,
如果x不能被平分成8段,则会做截断处理。默认情况下,其他参数的默认值为
window---窗函数,默认为nfft长度的海明窗Hamming
noverlap---每一段的重叠样本数,默认值是在各段之间产生50%的重叠
nfft---做FFT变换的长度,默认为256和大于每段长度的最小2次幂之间的最大值。
fs---采样频率,默认值归一化频率 .
Window---窗函数,如果window为一个整数,x将被分成window段,每段使用Hamming窗函数加窗。
如果window是一个向量,x将被分成length(window)段,每一段使用window向量指定的
窗函数加窗。所以如果想获取specgram函数的功能,只需指定一个256长度的Hann窗.
4.注意事项
nfft越大,频域的分辨率就越高(分辨率=fs/nfft),但离瞬时频率就越远;
noverlap影响时间轴的分辨率,越接近nfft,分辨率越高,相应的冗余就越多,计算量越大,但计算机只要能承受,问题不大。

本文详细介绍了傅里叶变换及其局限性,并重点讲解了短时傅里叶变换(STFT)的基本原理与应用。通过MATLAB示例,展示了如何使用spectrogram函数进行时频分析,特别关注了参数选择对结果的影响。
最低0.47元/天 解锁文章
3853

被折叠的 条评论
为什么被折叠?



