Mercurial > hg > ishara
diff dsp/cqedges.m @ 32:c3b0cd708782
Imported core dsp tools.
author | samer |
---|---|
date | Sun, 20 Jan 2013 13:48:47 +0000 |
parents | |
children | 5b7d90b6393a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dsp/cqedges.m Sun Jan 20 13:48:47 2013 +0000 @@ -0,0 +1,30 @@ +function edges=as_cqedges(fs,range,res,F0) + +% as_cqedges - Audio Spectrum linear to log frequency map (no checking) +% +% Converts a constant-Q filterbank specification into a list of band +% edges, and optionally the sparse mapping matrix +% which can be multiplied by a STFT power spectrogram to get a +% constant-Q spectrogram. +% +% as_cqmap0 :: +% real ~ 'sampling rate', +% [[2]] ~ 'requested lower and upper cut-off frequencies', +% real ~ 'resolution in octaves', +% real ~ 'origin of frequency grid in Hz (defaut=1kHz)' +% -> +% [[L-1]] ~ 'frequency bin edges', +% [[L,M]] ~ 'L by M sparse array'. + +% origin of frequnecy grid defaults to 1kHz +if nargin<4, F0=1000; end + +% quantise requested edges and represent them in +% in units of res on a log frequency scale. +limits = round(log2(range/F0)/res); + +% convert to normalised frequencies (fs=1) +edges = (F0/fs)*2.^(res*(limits(1):limits(2))); + +% remove any edges above Nyquist rate +if edges(end)>=0.5, edges = edges(edges<0.5); end