• 大小: 2KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-08-26
  • 语言: Matlab
  • 标签: matlab  

资源简介

参数可自由选择,可以根据自己需要选择步长、窗函数种类从而实现短时傅里叶变换。

资源截图

代码片段和文件信息

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

评论

共有 条评论