Documentation

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.

dct

Discrete cosine transform (DCT)

Syntax

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

Description

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.

Examples

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;
end
Needed = i;

Reconstruct the signal and compare to the original.

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

plot([x;xx]')
legend('Original',['Reconstructed, N = ' int2str(Needed)], ...
       'Location','SouthEast')

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

y(k)=w(k)n=1Nx(n)cos(π2N(2n1)(k1)),k=1,2,,N,

where

w(k)={1N,k=1,2N,2kN,

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.

References

[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?