dct {gsignal} | R Documentation |
Discrete Cosine Transform
Description
Compute the unitary discrete cosine transform of a signal.
Usage
dct(x, n = NROW(x))
Arguments
x |
input data, specified as a numeric vector or matrix. In case of a vector it represents a single signal; in case of a matrix each column is a signal. |
n |
transform length, specified as a positive integer scalar. Default:
|
Details
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. This property is useful for applications requiring data reduction.
The DCT has four standard variants. This function implements the DCT-II according to the definition in [1], which is the most common variant, and the original variant first proposed for image processing.
Value
Discrete cosine transform, returned as a vector or matrix.
Note
The transform is faster if x
is real-valued and has even length.
Author(s)
Paul Kienzle, pkienzle@users.sf.net.
Conversion to R by Geert van Boxtel, G.J.M.vanBoxtel@gmail.com.
References
[1] https://en.wikipedia.org/wiki/Discrete_cosine_transform
See Also
Examples
x <- matrix(seq_len(100) + 50 * cos(seq_len(100) * 2 * pi / 40))
X <- dct(x)
# Find which cosine coefficients are significant (approx.)
# zero the rest
nsig <- which(abs(X) < 1)
N <- length(X) - length(nsig) + 1
X[nsig] <- 0
# Reconstruct the signal and compare it to the original signal.
xx <- idct(X)
plot(x, type = "l")
lines(xx, col = "red")
legend("bottomright", legend = c("Original", paste("Reconstructed, N =", N)),
lty = 1, col = 1:2)