This is machine translation

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

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this 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?