function gf = filterbankfreqz(g,a,L,varargin)
%FILTERBANKFREQZ Filterbank frequency responses
% Usage: gf = filterbankfreqz(g,a,L)
%
% gf = FILTERBANKFREQZ(g,a,L) calculates length L frequency responses
% of filters in g and returns them as columns of gf.
%
% If an optional parameters 'plot' is passed to FILTERBANKFREQZ,
% the frequency responses will be plotted using PLOTFFT. Any
% optional parameter undestood by PLOTFFT can be passed in addition
% to 'plot'.
%
%
% Url: http://ltfat.github.io/doc/filterbank/filterbankfreqz.html
% Copyright (C) 2005-2023 Peter L. Soendergaard <peter@sonderport.dk> and others.
% This file is part of LTFAT version 2.6.0
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program. If not, see <http://www.gnu.org/licenses/>.
complainif_notenoughargs(nargin,3,'FILTERBANKFREQZ');
complainif_notposint(L,'L','FILTERBANKFREQZ');
% Wrap g if it is not a cell. The format of g will be checked
% further in filterbankwin.
if ~iscell(g)
g = {g};
end
% The only place we need a
% It is necessary for cases when filterbank is given by e.g.
% {'dual',g}
g = filterbankwin(g,a,L,'normal');
M = numel(g);
G1=comp_transferfunction(g{1},L);
gf = zeros(L,M,class(G1));
gf(:,1) = G1;
for m=2:M
gf(:,m) = cast(comp_transferfunction(g{m},L),class(G1));
end
% Search for the 'plot' flag
do_plot = any(strcmp('plot',varargin));
if do_plot
% First remove the 'plot' flag from the arguments
varargin(strcmp('plot',varargin)) = [];
% and pass everything else to plotfft
plotfft(gf,varargin{:});
end;
if nargout<1
clear gf;
end