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);