spectrogram-短时傅里叶变换

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;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值