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.

dsp.IDCT System object

Package: dsp

Inverse discrete cosine transform (IDCT)


The IDCT object computes the inverse discrete cosine transform (IDCT) of an input.

To compute the IDCT of an input:

  1. Define and set up your IDCT object. See Construction.

  2. Call step to compute the IDCT of an input according to the properties of dsp.IDCT. The behavior of step is specific to each object in the toolbox.

    Note:   Starting in R2016b, instead of using the step method to perform the operation defined by the System object™, you can call the object with arguments, as if it were a function. For example, y = step(obj,x) and y = obj(x) perform equivalent operations.


idct = dsp.IDCT returns a inverse discrete cosine transform (IDCT) object, idct. This object computes the IDCT of a real or complex input signal using the Table lookup method.

idct = dsp.IDCT('PropertyName',PropertyValue,...) returns an inverse discrete cosine transform (IDCT) object, idct, with each property set to the specified value.



Method to compute sines and cosines

Specify how the IDCT object computes the trigonometric function values as Trigonometric function or Table lookup. You must set this property to Table lookup for fixed-point inputs. The default is Table lookup.

 Fixed-Point Properties


stepInverse discrete cosine transform (IDCT) of input
Common to All System Objects

Create System object with same property values


Expected number of inputs to a System object


Expected number of outputs of a System object


Check locked states of a System object (logical)


Allow System object property value changes


expand all

Note: This example runs only in R2016b or later. If you are using an earlier release, replace each call to the function with the equivalent step syntax. For example, myObject(x) becomes step(myObject,x).

Use DCT to analyze the energy content in a sequence:

x = (1:128).' + 50*cos((1:128).'*2*pi/40);
dct = dsp.DCT;
X = dct(x);

Set the DCT coefficients which represent less than 0.1% of the total energy to 0 and reconstruct the sequence using IDCT.

[XX, ind] = sort(abs(X),1,'descend');
ii = 1;
while (norm([XX(1:ii);zeros(128-ii,1)]) <= 0.999*norm(XX))
    ii = ii+1;
disp(['Number of DCT coefficients that represent 99.9%',...
    'of the total energy in the sequence: ',num2str(ii)]);
XXt = zeros(128,1);
XXt(ind(1:ii)) = X(ind(1:ii));
idct = dsp.IDCT;
xt = idct(XXt);
plot(1:128,[x xt]);
legend('Original signal','Reconstructed signal',...
Number of DCT coefficients that represent 99.9%of the total energy in the sequence: 10


This object implements the algorithm, inputs, and outputs described on the IDCT block reference page. The object properties correspond to the block parameters.

Extended Capabilities

Introduced in R2012a

Was this topic helpful?