y@0: function filterBasis = createBPFilters(maxFreq,nbBandPassFilters,fftSize,factor) y@0: melfreq = linspace(0,2595*log10(1 + maxFreq/700),nbBandPassFilters); y@0: hertzfreq = 700*(10.^(melfreq/2595)-1); y@0: y@0: filterBasis = zeros(fftSize/2+1,nbBandPassFilters); y@0: mid = floor(hertzfreq(1)*factor+1); y@0: last = floor(hertzfreq(2)*factor+1); y@0: if (mid~=last) y@0: y@0: filterBasis(mid:last,1) = 1:-1/(last-mid):0; y@0: for ind = 1:length(hertzfreq) -2 y@0: first = floor(hertzfreq(ind)*factor+1); y@0: mid = floor(hertzfreq(ind+1)*factor+1); y@0: last = floor(hertzfreq(ind +2)*factor+1); y@0: filterBasis(first:mid,ind+1) = 0:1/(mid-first):1; y@0: filterBasis(mid:last,ind+1) = 1:-1/(last-mid):0; y@0: end y@0: first = floor(hertzfreq(end-1)*factor+1); y@0: mid = floor(hertzfreq(end)*factor+1); y@0: filterBasis(first:mid,end) = 0:1/(mid-first):1; y@0: % else y@0: % error('myApp:filterSize', 'Too many filters for parameters') y@0: end