tomwalters@0: % tomwalters@0: % Calculation of Equal Frequency scale on ERB/Mel/Log/Linear scale tomwalters@0: % Toshio IRINO tomwalters@0: % 5 Oct 2001 tomwalters@0: % tomwalters@0: % function [Frs] = EqualFreqScale(NameScale,NumCh,RangeFreq), tomwalters@0: % INPUT: NameScale: 'ERB', 'mel', 'log', 'linear' tomwalters@0: % NumCh: Number of channels tomwalters@0: % RangeFreq: Frequency Range tomwalters@0: % OUTPUT: Frs: Fr vector tomwalters@0: % WFval: Warped Freq. value tomwalters@0: % tomwalters@0: function [Frs, WFvals] = EqualFreqScale(NameScale,NumCh,RangeFreq), tomwalters@0: tomwalters@0: if nargin <3, help EqualFreqScale; end; tomwalters@0: if diff(RangeFreq) < 0, tomwalters@0: help EqualFreqScale; tomwalters@0: error('RangeFreq(1) should be less than RangeFreq(2).'); tomwalters@0: end; tomwalters@0: tomwalters@0: if strcmp(lower(NameScale),'linear') == 1, tomwalters@0: RangeWF = RangeFreq; tomwalters@0: dWF = diff(RangeWF)/(NumCh-1); tomwalters@0: WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; tomwalters@0: Frs = WFvals; tomwalters@0: tomwalters@0: elseif strcmp(lower(NameScale),'mel') == 1, tomwalters@0: RangeWF = Freq2Mel(RangeFreq); tomwalters@0: dWF = diff(RangeWF)/(NumCh-1); tomwalters@0: WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; tomwalters@0: Frs = Mel2Freq(WFvals); tomwalters@0: tomwalters@0: elseif strcmp(lower(NameScale),'erb') == 1, tomwalters@0: RangeWF = Freq2ERB(RangeFreq); tomwalters@0: dWF = diff(RangeWF)/(NumCh-1); tomwalters@0: WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; tomwalters@0: Frs = ERB2Freq(WFvals); tomwalters@0: tomwalters@0: elseif strcmp(lower(NameScale),'log') == 1, tomwalters@0: if min(RangeFreq) < 50, tomwalters@0: disp([ 'min(RangeFreq) < 50. Replaced by 50.' ]); tomwalters@0: RangeFreq(1) = 50; tomwalters@0: end; tomwalters@0: RangeWF = log10(RangeFreq); tomwalters@0: dWF = diff(RangeWF)/(NumCh-1); tomwalters@0: WFvals = RangeWF(1):dWF:RangeWF(2)+eps*1000; tomwalters@0: Frs = 10.^WFvals; tomwalters@0: tomwalters@0: else tomwalters@0: help EqualFreqScale; tomwalters@0: error('Specify NameScale correctly'); tomwalters@0: end; tomwalters@0: