clc clear all close all [s,fs]=wavread('C7_1_y.wav'); winlen=256; win=hamming(winlen); overlap=100; f=enframe(s,win,overlap); fn=Filpframe_OverlapA(f,win,overlap); subplot(211) plot(s/max(abs(s))) xlabel('点数') ylabel('幅度') title('(a)原始信号') subplot(212) plot(fn/max(abs(fn))) xlabel('点数') function frameout=enframe(x,win,inc) nx=length(x(:)); % 取数据长度 nwin=length(win); % 取窗长 if (nwin == 1) % 判断窗长是否为1,若为1,即表示没有设窗函数 len = win; % 是,帧长=win else len = nwin; % 否,帧长=窗长 end if (nargin < 3) % 如果只有两个参数,设帧inc=帧长 inc = len; end function frameout=Filpframe_LinearA(x,win,inc) [nf,len]=size(x); nx=(nf-1) *inc+len; %原信号长度 frameout=zeros(nx,1); nwin=length(win); % 取窗长 overlap=nwin-inc; % 重叠长度 tempr1=(0:overlap-1)'/overlap; % 斜三角窗函数w1 tempr2=(overlap-1:-1:0)'/overlap; % 斜三角窗函数w2 if (nwin ~= 1) % 判断窗长是否为1,若为1,即表示没有设窗函数 winx=repmat(win',nf,1); x=x./winx; % 除去加窗的影响 x(find(isinf(x)))=0; %去除除0得到的Inf end
版本:2014a
完整代码或代写加1564658423