[287832]: comp / comp_warpedfreqresponse.m Maximize Restore History

Download this file

comp_warpedfreqresponse.m    37 lines (29 with data), 1.4 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function H=comp_warpedfreqresponse(wintype,fc,bw,fs,L,freqtoscale,varargin)
%COMP_WARPEDFREQRESPONSE Transfer function of warped filter
% Usage: H=comp_warpedfreqresponse(wintype,fc,bw,fs,L,freqtoscale);
% H=comp_warpedfreqresponse(wintype,fc,bw,fs,L,freqtoscale,normtype);
%
% Input parameters:
% wintype : Type of window (from firwin)
% fc : Centre frequency, in scale units.
% bw : Bandwith, in scale units.
% fs : Sampling frequency in Hz.
% L : Transform length (in samples).
% freqtoscale : Function to convert Hz into scale units.
% normtype : Normalization flag to pass to |normalize|.
definput.import={'normalize'};
[flags,kv]=ltfatarghelper({},definput,varargin);
% Compute the values in Aud of the channel frequencies of an FFT of
% length L.
bins_lo = freqtoscale(modcent(fs*(0:L-1)/L,fs)).';
% This one is necessary to represent the highest frequency filters, which
% overlap into the negative frequencies.
bins_hi = 2*freqtoscale(fs/2)+bins_lo;
% firwin makes a window of width 1 centered around 0 on the scale, so we rescale the
% bins in order to pass the correct width to firwin and subtract fc
bins_lo=(bins_lo-fc)/bw;
bins_hi=(bins_hi-fc)/bw;
win_lo=firwin(wintype,bins_lo);
win_hi=firwin(wintype,bins_hi);
H=win_lo+win_hi;
H=normalize(H,flags.norm);