This is machine translation

Translated by Microsoft
Mouse over text to see original. Click the button below to return to the English verison of the page.


Discrete cosine transform (DCT)


y = dct(x)
y = dct(x,n)
y = dct(gpuArrayX,n)


y = dct(x) returns the unitary discrete cosine transform of x. y has the same size as x. If x is a matrix, then dct transforms its columns.

y = dct(x,n) zero-pads or truncates x to length n before transforming.

y = dct(gpuArrayX,n) returns the discrete cosine transform of gpuArray object gpuArrayX. See GPU Computing and GPU System Requirements for details on gpuArray objects.


collapse all

Find how many DCT coefficients represent 99% of the energy in a sequence.

x = (1:100) + 50*cos((1:100)*2*pi/40);
X = dct(x);
[XX,ind] = sort(abs(X),'descend');
i = 1;
while norm(X(ind(1:i)))/norm(X)<0.99
   i = i + 1;
Needed = i;

Reconstruct the signal and compare to the original.

X(ind(Needed+1:end)) = 0;
xx = idct(X);

legend('Original',['Reconstructed, N = ' int2str(Needed)], ...

Related Examples

Discrete Cosine Transform

The discrete cosine transform (DCT) is closely related to the discrete Fourier transform. You can often reconstruct a sequence very accurately from only a few DCT coefficients, a useful property for applications requiring data reduction.

The DCT is defined by




and N is the length of x. The series is indexed from n = 1 and k = 1 instead of the usual n = 0 and k = 0 because MATLAB® vectors run from 1 to N instead of from 0 to N – 1.


[1] Jain, A. K. Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.

[2] Pennebaker, W. B., and J. L. Mitchell. JPEG Still Image Data Compression Standard. New York: Van Nostrand-Reinhold, 1993.

See Also

| | |

Introduced before R2006a

Was this topic helpful?