www.pudn.com > mel_endpointdetection.rar > melfilterbankm.m


function [y]=melfilterbankm(n,N,fs) 
f_max=floor(fs/2); 
p=2595*log10(1+f_max/700); 
mel_interval=p/(n+1); 
k=1:(floor(N/2)-1); 
f=k./N*fs; 
mf=2595*log10(1+f/700); 
mfn=floor(mf/mel_interval)+1; 
le=(0:n)*mel_interval; 
cf=(1:n+1)*mel_interval; 
dl=1./(cf-le); 
lf=dl(mfn).*(mf-le(mfn)); 
rf=1-lf; 
 
 
yy=zeros(n,floor(N/2)); 
yl=zeros(n,floor(N/2)); 
yr=zeros(n,floor(N/2)); 
yy=zeros(n,floor(N/2)); 
 
for i=1:floor(N/2)-1 
     yl(mfn(i),i)=lf(i); 
     yr(mfn(i),i)=rf(i); 
end 
 
for i=1:20 
     yy(i,:)=yl(i,:)+yr(i+1,:); 
end 
 y=700*(10.^(yy./2595)-1);