Mercurial > hg > yjdafx13bpr
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 |