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
the same size as
a matrix, then
dct transforms its columns.
y = dct(x,n) zero-pads or
x to length
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')
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
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.
 Jain, A. K. Fundamentals of Digital Image Processing. Englewood Cliffs, NJ: Prentice-Hall, 1989.
 Pennebaker, W. B., and J. L. Mitchell. JPEG Still Image Data Compression Standard. New York: Van Nostrand-Reinhold, 1993.