view Sirtassa/createBPFilters.m @ 2:13ec2fa02a26 tip

(none)
author Yannick JACOB <y.jacob@se12.qmul.ac.uk>
date Tue, 03 Sep 2013 15:33:42 +0100
parents 2cd427e000b0
children
line wrap: on
line source
function filterBasis = createBPFilters(maxFreq,nbBandPassFilters,fftSize,factor)
melfreq = linspace(0,2595*log10(1 + maxFreq/700),nbBandPassFilters);
hertzfreq = 700*(10.^(melfreq/2595)-1);

filterBasis = zeros(fftSize/2+1,nbBandPassFilters);
mid = floor(hertzfreq(1)*factor+1);
last = floor(hertzfreq(2)*factor+1);
if (mid~=last)
    
    filterBasis(mid:last,1) = 1:-1/(last-mid):0;
    for ind = 1:length(hertzfreq) -2
        first = floor(hertzfreq(ind)*factor+1);
        mid = floor(hertzfreq(ind+1)*factor+1);
        last = floor(hertzfreq(ind +2)*factor+1);
        filterBasis(first:mid,ind+1) = 0:1/(mid-first):1;
        filterBasis(mid:last,ind+1) = 1:-1/(last-mid):0;
    end
    first = floor(hertzfreq(end-1)*factor+1);
    mid = floor(hertzfreq(end)*factor+1);
    filterBasis(first:mid,end) = 0:1/(mid-first):1;
% else
%     error('myApp:filterSize', 'Too many filters for parameters')
end