最近在用短时傅里叶变换做项目,请问,怎么得到频率与时间的变化图?下面是我画的程序:%% STFTSTFT = fft(y);%% Powersepctrumd = abs(STFT(1:windowlength/2,:)).^2;Powerspectrum = 2/windowlength*d;%tune time and frequency for plottingt = (1:size(y,2))*windowlength/Fs;frequency = (0:windowlength/2-1)/windowlength*Fs;%% Plot the fast fourier by windowingif grfigure,surf(t,frequency,Powerspectrum);shading interp;xlabel('time');ylabel('frequency');zlabel('Power spectrum');end怎么得到频率与时间的变化图?
网友回答
【答案】 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 %添加网格线
满意请采纳.