# cqt

Constant-Q nonstationary Gabor transform

## Syntax

## Description

returns the constant-Q transform (CQT), `cfs`

= cqt(`x`

)`cfs`

, of the input
signal `x`

. The input signal must have at least four samples.

If

`x`

is a vector, then`cqt`

returns a matrix corresponding to the CQT.If

`x`

is a matrix, then`cqt`

obtains the CQT for each column (independent channel) of`x`

. The function returns a multidimensional array corresponding to the maximally redundant version of the CQT.

`[`

returns the frequency intervals, `cfs`

,`f`

,`g`

,`fshifts`

,`fintervals`

] = cqt(`x`

)`fintervals`

, corresponding the
rows of `cfs`

. The *k*th element of
`fshifts`

is the frequency shift in DFT bins between the
`((`

and
*k*-1) mod *N*)`(`

element
of *k* mod *N*)`fintervals`

with

, where *k* =
0,1,2,...,*N*-1*N* is
the number of frequency shifts. Because MATLAB^{®} indexes from 1, `fshifts(1)`

contains the frequency
shift between `fintervals{end}`

and
`fintervals{1}`

, `fshifts(2)`

contains the
frequency shift between `fintervals{1}`

and
`fintervals{2}`

, and so on.

`[___] = cqt(___,`

returns the CQT with additional options specified by one or more
`Name,Value`

)`Name,Value`

pair arguments, using any of the preceding
syntaxes.

`cqt(___)`

with no output arguments plots the CQT
in the current figure. Plotting is supported for vector inputs only. If the input
signal is real and `Fs`

is the sampling frequency, the CQT is
plotted over the range `[0,Fs/2]`

. If the signal is complex, the
CQT is plotted over the range [`0,Fs`

).

**Note**

In order to visualize a sparse CQT, coefficients have to be interpolated.
When interpolation occurs, the plot can have significant smearing and be
difficult to interpret. If you want to plot the CQT, we recommend using the
default `TransformType`

value
`'full'`

.

## Examples

## Input Arguments

## Output Arguments

## Algorithms

## References

[1] Jaillet, Florent. “Représentation et traitement temps-fréquence des signaux audionumériques pour des applications de design sonore.” Ph.D. dissertation, Université de la Méditerranée, Aix-Marseille II, 2005.

[2] Balazs, P., M. Dörfler, F.
Jaillet, N. Holighaus, and G. Velasco. “Theory, Implementation and Applications of
Nonstationary Gabor Frames.” *Journal of Computational and Applied
Mathematics* 236, no. 6 (October 2011): 1481–96.
https://doi.org/10.1016/j.cam.2011.09.011.

[3] Holighaus, Nicki, M. Dörfler,
G. A. Velasco, and T. Grill. “A Framework for Invertible, Real-Time Constant-Q
Transforms.” *IEEE Transactions on Audio, Speech, and Language
Processing* 21, no. 4 (April 2013): 775–85.
https://doi.org/10.1109/TASL.2012.2234114.

[4] Velasco, G. A., N. Holighaus,
M. Dörfler, and T. Grill. "Constructing an invertible constant-Q transform with
nonstationary Gabor frames." In *Proceedings of the 14th International
Conference on Digital Audio Effects (DAFx-11)*. Paris, France:
2011.

[5] Schörkhuber, C., A. Klapuri,
N. Holighaus, and M. Dörfler. "A MATLAB Toolbox for Efficient Perfect Reconstruction Time-Frequency Transforms
with Log-Frequency Resolution." Submitted to the *AES 53rd International
Conference on Semantic Audio*. London, UK: 2014.

[6] Průša, Z., P. L. Søndergaard,
N. Holighaus, C. Wiesmeyr, and P. Balazs. *The Large Time-Frequency Analysis
Toolbox 2.0*. Sound, Music, and Motion, Lecture Notes in Computer Science
2014, pp 419-442.

## Extended Capabilities

## Version History

**Introduced in R2018a**