Function: ifilterbankiter
IFILTERBANKITER  Filter bank iterative inversion
  Usage:  f=ifilterbankiter(c,g,a);

  IFILTERBANKITER(c,g,a) iteratively synthesizes a signal f from the
  coefficients c which were obtained using the filters stored in g for
  a channel subsampling rate of a (the hop-size).

  The filter bank g and the subsampling rate a must be the same
  as used in FILTERBANK or UFILTERBANK.

  This function is useful if there is no way how to explicitly compute
  a dual system using FILTERBANKDUAL or FILTERBANKREALDUAL.

  Additional parameters
  ---------------------

  The function calls FRSYNITER and passes all the optional arguments to it.
  Please refer to help of FRSYNITER for further details.

  Please note that by default, the function expects filterbank g*
  to be created for real signals i.e. g cover only the positive frequencies.
  Additional flag 'complex' is required if the filterbank is defined for 
  positive and negative frequencies.

  Examples:
  ---------

  The following example compares convergence rates of CG and PCG for a
  filterbank which forms a frame, but it is neither uniform or painless:

      [f,fs] = greasy; L = size(f,1);
      [g,a,fc]=erbfilters(fs,L,'fractional','bwmul',0.6,'redmul',4/5,'complex');
      filterbankfreqz(g,a,L,'plot','linabs');
      % Filterbankdual does not work
      try
          gd=filterbankdual(g,a,L);
      catch
          disp('FILTERBANKDUAL exited with error.');
      end

      c = filterbank(f,g,a);
      [fpcg,~,iterpcg] = ifilterbankiter(c,g,a,'complex','pcg');
      [fcg,~,itercg] = ifilterbankiter(c,g,a,'complex','cg');

      fprintf('CG achieved error %e in %d iterations.n',norm(f-fcg), itercg);
      fprintf('PCG achieved error %e in %d iterations.n',norm(f-fpcg), iterpcg);

  Similar example with real filterbank:

      [f,fs] = greasy; L = size(f,1);
      [g,a,fc]=erbfilters(fs,L,'fractional','bwmul',0.6,'redmul',4/5);
      filterbankfreqz(g,a,L,'plot','linabs');
      % Filterbankrealdual does not work
      try
          gd=filterbankrealdual(g,a,L);
      catch
          disp('FILTERBANKREALDUAL exited with error.');
      end

      c = filterbank(f,g,a);
      [fpcg,~,iterpcg] = ifilterbankiter(c,g,a,'pcg');
      [fcg,~,itercg] = ifilterbankiter(c,g,a,'cg');

      fprintf('CG achieved error %e in %d iterations.n',norm(f-fcg), itercg);
      fprintf('PCG achieved error %e in %d iterations.n',norm(f-fpcg), iterpcg);


  References:
    T. Necciari, P. Balazs, N. Holighaus, and P. L. Soendergaard. The ERBlet
    transform: An auditory-based time-frequency representation with perfect
    reconstruction. In Proceedings of the 38th International Conference on
    Acoustics, Speech, and Signal Processing (ICASSP 2013), pages 498--502,
    Vancouver, Canada, May 2013. IEEE.
    
    T. Necciari, N. Holighaus, P. Balazs, Z. Průša, P. Majdak, and
    O. Derrien. Audlet filter banks: A versatile analysis/synthesis
    framework using auditory frequency scales. Applied Sciences, 8(1),
    2018. [1]http ]
    
    References
    
    1. http://www.mdpi.com/2076-3417/8/1/96
    

Url: http://ltfat.github.io/doc/filterbank/ifilterbankiter.html

See also: filterbank, ufilterbank, ifilterbank, filterbankdual.

Package: ltfat