
matlab有STFT的自带函数,你可以help下spectrogram,里面有例程。下面这个小程序就是一个STFT的小示例:
T = 0:0.001:2
X = chirp(T,100,1,200,'q')
spectrogram(X,128,120,128,1E3)
title('Quadratic Chirp')
a=wavread('jiasiqi.wav') %将音频信号jiasiqi.wav读入subplot(2,1,1), %分配画布,一幅图上共两个图,这是第一个
plot(a)title('original signal') %画出原始信号,即前面这个音频信号的原始波形
grid%添加网格线
N=256 %设置短时傅里叶变换的长度,同时也是汉明窗的长度
h=hamming(N) %设置汉明窗
for m=1:N %用汉明窗截取信号,长度为N,主要是为了减少截断引起的栅栏效应等
b(m)=a(m)*h(m)
end
y=20*log(abs(fft(b))) %做傅里叶变换,取其模值,即幅频特性,然后用分贝(dB)表示
subplot(2,1,2) %分配画布,第二副图
plot(y)title('短时谱') %画出短时谱
grid%添加网格线
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)