# Documentation

### This is machine translation

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

# idct

Inverse discrete cosine transform

## Syntax

`x = idct(y)x = idct(y,n)x = idct(gpuArrayY,n)`

## Description

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

`x = idct(y,n)` zero-pads or truncates the vector `y` to length `n` before transforming.

`x = idct(gpuArrayY,n)` returns the inverse discrete cosine transform of `gpuArray` object `gpuArrayY`. See GPU Computing and GPU System Requirements for details on `gpuArray` objects.

## Examples

collapse all

Generate a signal that consists of a 25 Hz sinusoid sampled at 1000 Hz for 1 second. The sinusoid is embedded in white Gaussian noise with variance 0.01.

```rng('default') Fs = 1000; t = 0:1/Fs:1-1/Fs; x = sin(2*pi*25*t) + randn(size(t))/10; ```

Compute the discrete cosine transform of the sequence. Determine how many of the 1000 DCT coefficients are significant, that is, greater than 1.

```y = dct(x); sigcoeff = abs(y)>=1; howmany = sum(sigcoeff) ```
```howmany = 17 ```

Reconstruct the signal using only the significant components.

```y(~sigcoeff) = 0; z = idct(y); ```

Plot the original and reconstructed signals.

```subplot(2,1,1) plot(t,x) yl = ylim; title('Original') subplot(2,1,2) plot(t,z) ylim(yl) title('Reconstructed') ```

## Inverse Discrete Cosine Transform

The inverse discrete cosine transform reconstructs a sequence from its discrete cosine transform (DCT) coefficients. The `idct` function is the inverse of the `dct` function.

The inverse discrete cosine transform is defined by

`$x\left(n\right)=\sum _{k=1}^{N}w\left(k\right)y\left(k\right)\mathrm{cos}\left(\frac{\pi \left(2n-1\right)\left(k-1\right)}{2N}\right),\text{ }n=1,2,\dots N$`

where

`$w\left(k\right)=\left\{\begin{array}{ll}\frac{1}{\sqrt{N}},\hfill & k=1\hfill \\ \sqrt{\frac{2}{N}},\hfill & 2\le k\le N\hfill \end{array}$`

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.