Mercurial > hg > aimmat
view aim-mat/modules/bmm/dcgc/EqualFreqScale.m @ 4:537f939baef0 tip
various bug fixes and changed copyright message
author | Stefan Bleeck <bleeck@gmail.com> |
---|---|
date | Tue, 16 Aug 2011 14:37:17 +0100 |
parents | 74dedb26614d |
children |
line wrap: on
line source
% % Calculation of Equal Frequency scale on ERB/Mel/Log/Linear scale % Toshio IRINO % 5 Oct 2001 % % function [Frs] = EqualFreqScale(NameScale,NumCh,RangeFreq), % INPUT: NameScale: 'ERB', 'mel', 'log', 'linear' % NumCh: Number of channels % RangeFreq: Frequency Range % OUTPUT: Frs: Fr vector % WFval: Warped Freq. value % function [Frs, WFvals] = EqualFreqScale(NameScale,NumCh,RangeFreq), if nargin <3, help EqualFreqScale; end; if diff(RangeFreq) < 0, help EqualFreqScale; error('RangeFreq(1) should be less than RangeFreq(2).'); end; if strcmp(lower(NameScale),'linear') == 1, RangeWF = RangeFreq; dWF = diff(RangeWF)/(NumCh-1); WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; Frs = WFvals; elseif strcmp(lower(NameScale),'mel') == 1, RangeWF = Freq2Mel(RangeFreq); dWF = diff(RangeWF)/(NumCh-1); WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; Frs = Mel2Freq(WFvals); elseif strcmp(lower(NameScale),'erb') == 1, RangeWF = Freq2ERB(RangeFreq); dWF = diff(RangeWF)/(NumCh-1); WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; Frs = ERB2Freq(WFvals); elseif strcmp(lower(NameScale),'log') == 1, if min(RangeFreq) < 50, disp([ 'min(RangeFreq) < 50. Replaced by 50.' ]); RangeFreq(1) = 50; end; RangeWF = log10(RangeFreq); dWF = diff(RangeWF)/(NumCh-1); WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; Frs = 10.^WFvals; else help EqualFreqScale; error('Specify NameScale correctly'); end;