資源簡介
參數可自由選擇,可以根據自己需要選擇步長、窗函數種類從而實現短時傅里葉變換。
代碼片段和文件信息
function?[spec?freq]=STFT(sig?nlevelwinlensampfreq)
%計算信號的短時傅里葉頻譜
%sig:?帶分析信號
%nlevel:頻率軸長度劃分,默認512
%?winlen:?漢寧窗長度,默認64
%?sampfreq:?信號的采樣頻率,默認1
%?sampfreq=100;
%?t=0:1/sampfreq:5;
%?sig=sin(2*pi*(5*t+4*t.^2));
%?sig=sig+sin(2*pi*(45*t-4*t.^2));
%?STFT(sig512128100)
if?(nargin<1)
????error(‘at?least?one?parameter?required‘);
end
sig=real(sig);
siglen=length(sig);
if?(nargin<4)
????sampfreq=1;
end
if?(nargin<3)
????winlen=64;
end
if?(nargin<2)
????nlevel=512;
end
nlevel=ceil(nlevel/2)*2+1;
winlen=ceil(winlen/2)*2+1;
winfun=exp(-6*linspace(-11winlen).^2);
winfun=winfun/norm(winfun);
lh=(winlen-1)/2;
ln=(nlevel-1)/2;
spec=zeros(nlevelsiglen);
wait=waitbar(0‘under?calculation?please?wait...‘);
for?iloop=1:siglen
????waitbar(iloop/siglenwait);
????ileft=min([iloop-1lh
- 上一篇:Fisher判別matlab實現
- 下一篇:基于Matlab的步進電機閉環建模與仿真
評論
共有 條評論