function[STFT_X,STFT_t,STFT_f]=myspectrogram(S,windows,nov,nfft,Fs)
tic,
%% S为输入语音片段,window为加的窗,nov为重叠点数,nff为采样点数fft,Fs为采样频率
L=length(S);
nsc=length(windows);%窗长
coln = fix((L-nov)/(nsc-nov));%分成片段数,列数
rown=floor(nfft/2)+1; %行数
%%初始化变量
STFT_X0=zeros(nsc,coln); %分帧结果
index=1;%索引
%%分帧,加窗
index_L=nsc-nov; %窗移
for i=1:coln
%分帧
temp_S0=S(index:index+nsc-1,1);
%加窗
temp_S=temp_S0.*windows;
%存到每一列
STFT_X0(:,i)=temp_S(:,1);
%将索引后移
index=index+index_L;
end
STFT_X0=fft(STFT_X0,nfft,1);
%取一半
STFT_X= STFT_X0(1:rown,:);
%% 画频谱图
%%归一化
STFT_X1 = abs(STFT_X)/coln*2;
% convert amplitude spectrum to dB (min = -120 dB)
STFT_X1 = 20*log10(STFT_X1);
%时间轴
nsc1=nsc/2;