diff Sirtassa/createBPFilters.m @ 0:2cd427e000b0

initial commit
author Yannick JACOB <y.jacob@se12.qmul.ac.uk>
date Tue, 03 Sep 2013 12:53:16 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Sirtassa/createBPFilters.m	Tue Sep 03 12:53:16 2013 +0100
@@ -0,0 +1,23 @@
+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
\ No newline at end of file