Mercurial > hg > ishara
annotate dsp/hann_filterbank.m @ 61:eff6bddf82e3 tip
Finally implemented perceptual brightness thing.
author | samer |
---|---|
date | Sun, 11 Oct 2015 10:20:42 +0100 |
parents | c3b0cd708782 |
children |
rev | line source |
---|---|
samer@32 | 1 % hann_filterbank - Bank of Hanning (raised cosine) filters |
samer@32 | 2 % |
samer@32 | 3 % hann_filterbank :: |
samer@32 | 4 % E:[[M+2]->nonneg] ~'array of filter edge frequencies', |
samer@32 | 5 % F:[[N]] ~'array of bin frequencies for input spectra' |
samer@32 | 6 % -> [[M,N]] ~'matrix to multiply by input spectra'. |
samer@32 | 7 % |
samer@32 | 8 % Modelled on Malcom Slaney's code in Auditory toolbox. |
samer@32 | 9 |
samer@32 | 10 function W=hann_filterbank(edges,f) |
samer@32 | 11 M = length(edges)-2; % total number of filters to prepare |
samer@32 | 12 |
samer@32 | 13 lower = edges(1:M); |
samer@32 | 14 center = edges(2:M+1); |
samer@32 | 15 upper = edges(3:M+2); |
samer@32 | 16 |
samer@32 | 17 W = zeros(M,length(f)); |
samer@32 | 18 for i=1:M |
samer@32 | 19 W(i,:) = (f>lower(i) & f<=center(i)).*(f-lower(i))/(center(i)-lower(i)) ... |
samer@32 | 20 + (f>center(i) & f<upper(i)).*(upper(i)-f)/(upper(i)-center(i)); |
samer@32 | 21 end |
samer@32 | 22 W=sparse((1-cos(pi*W))/2); |
samer@32 | 23 end |