Function: cqt
CQT  Constant-Q non-stationary Gabor filterbank
  Usage: [c,Ls,g,shift,M] = cqt(f,fmin,fmax,bins,fs,M)
         [c,Ls,g,shift,M] = cqt(f,fmin,fmax,bins,fs)
         [c,Ls,g,shift] = cqt(...)
         [c,Ls] = cqt(...)
         c = cqt(...)

  Input parameters: 
        f         : The signal to be analyzed (For multichannel
                    signals, input should be a matrix which each
                    column storing a channel of the signal).
        fmin      : Minimum frequency (in Hz)
        fmax      : Maximum frequency (in Hz)
        bins      : Vector consisting of the number of bins per octave
        fs        : Sampling rate (in Hz)
        M         : Number of time channels (optional)
                    If M is constant, the output is converted to a
                    matrix
  Output parameters:
        c         : Transform coefficients (matrix or cell array)
        Ls        : Original signal length (in samples)
        g         : Cell array of Fourier transforms of the analysis 
                    windows
        shift     : Vector of frequency shifts
        M         : Number of time channels

  This function computes a constant-Q transform via non-stationary Gabor
  filterbanks. Given the signal f, the constant-Q parameters fmin,
  fmax and bins, as well as the sampling rate fs of f, the
  corresponding constant-Q coefficients c are given as output. For
  reconstruction, the length of f and the filterbank parameters can
  be returned also.

  The transform produces phase-locked coefficients in the
  sense that each filter is considered to be centered at
  0 and the signal itself is modulated accordingly.

  Optional input arguments arguments can be supplied like this:
      
      cqt(f,fmin,fmax,bins,fs,'min_win',min_win)

  The arguments must be character strings followed by an
  argument:

    'min_win',min_win        Minimum admissible window length 
                             (in samples) 

    'Qvar',Qvar              Bandwidth variation factor

    'M_fac',M_fac            Number of time channels are rounded to 
                             multiples of this

    'winfun',winfun          Filter prototype (see FIRWIN for available 
                             filters)
    'fractional'             Allow fractional shifts and bandwidths


  Example:
  --------

  The following example shows analysis and synthesis with CQT and ICQT:

    [f,fs] = gspi;
    fmin = 200;
    fmax = fs/2;
    [c,Ls,g,shift,M] = cqt(f,fmin,fmax,48,fs);
    fr = icqt(c,g,shift,Ls);
    rel_err = norm(f-fr)/norm(f);
    plotfilterbank(c,Ls./M,[],fs,'dynrange',60);


  References:
    N. Holighaus, M. Doerfler, G. A. Velasco, and T. Grill. A framework for
    invertible, real-time constant-Q transforms. IEEE Transactions on
    Audio, Speech and Language Processing, 21(4):775 --785, 2013.
    
    G. A. Velasco, N. Holighaus, M. Doerfler, and T. Grill. Constructing an
    invertible constant-Q transform with non-stationary Gabor frames.
    Proceedings of DAFX11, 2011.
    

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

See also: icqt, firwin.

Package: ltfat