Mercurial > hg > ishara
annotate dsp/cqedges.m @ 33:5b7d90b6393a
Minor tweaks, still needs work.
author | samer |
---|---|
date | Sun, 20 Jan 2013 18:56:19 +0000 |
parents | c3b0cd708782 |
children |
rev | line source |
---|---|
samer@33 | 1 % cqedges - Audio Spectrum linear to log frequency map (no checking) |
samer@32 | 2 % |
samer@33 | 3 % cqedges :: |
samer@32 | 4 % real ~ 'sampling rate', |
samer@32 | 5 % [[2]] ~ 'requested lower and upper cut-off frequencies', |
samer@32 | 6 % real ~ 'resolution in octaves', |
samer@32 | 7 % real ~ 'origin of frequency grid in Hz (defaut=1kHz)' |
samer@33 | 8 % -> [[L-1]] ~ 'frequency bin edges'. |
samer@33 | 9 % |
samer@33 | 10 % Converts a constant-Q filterbank specification into a list of band edges. |
samer@32 | 11 |
samer@33 | 12 function edges=cqedges(fs,range,res,F0) |
samer@33 | 13 % origin of frequnecy grid defaults to 1kHz |
samer@33 | 14 if nargin<4, F0=1000; end |
samer@32 | 15 |
samer@33 | 16 % quantise requested edges and represent them in |
samer@33 | 17 % in units of res on a log frequency scale. |
samer@33 | 18 limits = round(log2(range/F0)/res); |
samer@32 | 19 |
samer@33 | 20 % convert to normalised frequencies (fs=1) |
samer@33 | 21 edges = (F0/fs)*2.^(res*(limits(1):limits(2))); |
samer@33 | 22 keyboard |
samer@32 | 23 |
samer@33 | 24 % remove any edges above Nyquist rate |
samer@33 | 25 if edges(end)>=0.5, edges = edges(edges<0.5); end |
samer@33 | 26 end |