ML Community Day is November 9! Join us for updates from TensorFlow, JAX, and more Learn more


Computes the 1D Discrete Cosine Transform (DCT) of input.

Types I, II, III and IV are supported. Type I is implemented using a length 2N padded tf.signal.rfft. Type II is implemented using a length 2N padded tf.signal.rfft, as described here: Type 2 DCT using 2N FFT padded (Makhoul). Type III is a fairly straightforward inverse of Type II (i.e. using a length 2N padded tf.signal.irfft). Type IV is calculated through 2N length DCT2 of padded signal and picking the odd indices.

input A [..., samples] float32/float64 Tensor containing the signals to take the DCT of.
type The DCT type to perform. Must be 1, 2, 3 or 4.
n The length of the transform. If length is less than sequence length, only the first n elements of the sequence are considered for the DCT. If n is greater than the sequence length, zeros are padded and then the DCT is computed as usual.
axis For future expansion. The axis to compute the DCT along. Must be -1.
norm The normalization to apply. None for no normalization or 'ortho' for orthonormal normalization.
name An optional name for the operation.

A [..., samples] float32/float64 Tensor containing the DCT of input.

ValueError If type is not 1, 2, 3 or 4, axis is not -1, n is not None or greater than 0, or norm is not None or 'ortho'.
ValueError If type is 1 and norm is ortho.

scipy compatibility

Equivalent to scipy.fftpack.dct for Type-I, Type-II, Type-III and Type-IV DCT.