annotate 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
rev   line source
y@0 1 function filterBasis = createBPFilters(maxFreq,nbBandPassFilters,fftSize,factor)
y@0 2 melfreq = linspace(0,2595*log10(1 + maxFreq/700),nbBandPassFilters);
y@0 3 hertzfreq = 700*(10.^(melfreq/2595)-1);
y@0 4
y@0 5 filterBasis = zeros(fftSize/2+1,nbBandPassFilters);
y@0 6 mid = floor(hertzfreq(1)*factor+1);
y@0 7 last = floor(hertzfreq(2)*factor+1);
y@0 8 if (mid~=last)
y@0 9
y@0 10 filterBasis(mid:last,1) = 1:-1/(last-mid):0;
y@0 11 for ind = 1:length(hertzfreq) -2
y@0 12 first = floor(hertzfreq(ind)*factor+1);
y@0 13 mid = floor(hertzfreq(ind+1)*factor+1);
y@0 14 last = floor(hertzfreq(ind +2)*factor+1);
y@0 15 filterBasis(first:mid,ind+1) = 0:1/(mid-first):1;
y@0 16 filterBasis(mid:last,ind+1) = 1:-1/(last-mid):0;
y@0 17 end
y@0 18 first = floor(hertzfreq(end-1)*factor+1);
y@0 19 mid = floor(hertzfreq(end)*factor+1);
y@0 20 filterBasis(first:mid,end) = 0:1/(mid-first):1;
y@0 21 % else
y@0 22 % error('myApp:filterSize', 'Too many filters for parameters')
y@0 23 end