Returns the convolution matrix for a filter kernel.
convmtx(h, n)
Arguments
h: Input, coerced to a vector, representing the filter kernel
n: Length of vector(s) that h is to be convolved with.
Returns
Convolution matrix of input h for a vector of length n. If h is a vector of length m, then the convolution matrix has m + n - 1 rows and n columns.
Details
Computing a convolution using conv when the signals are vectors is generally more efficient than using convmtx. For multichannel signals, however, when a large number of vectors are to be convolved with the same filter kernel, convmtx might be more efficient.
The code cm <- convmtx(h, n) computes the convolution matrix of the filter kernel h with a vector of length n. Then, cm x gives the convolution of h and x.
Examples
N <-1000a <- runif(N)b <- runif(N)cm <- convmtx(b, N)d <- cm %*% a
cref = conv(a, b)all.equal(max(d - cref),0)