https://github.com/cran/pracma
Raw File
Tip revision: 3fdb68cc842f2ab3b59608f8e04d495763584f78 authored by Hans W. Borchers on 27 November 2015, 12:07:10 UTC
version 1.8.8
Tip revision: 3fdb68c
deconv.R
##
##  d e c o n v . R  Deconvolution
##


deconv <- function(b, a) {
    if (length(b) == 0)
        return(list(q = 0, r = c()))
    if ( (!is.numeric(b) && ! is.complex(b)) ||
         (!is.numeric(a) && ! is.complex(a)) )
        stop("Arguments 'b' and 'a' must be numeric or complex.")

    if ( a[1] == 0)
        stop("First element of argument 'a' must be nonzero.")

    nb <- length(b)
    na <- length(a)
    if (nb < na)
        return(list(q = 0, r = b))

    q <- c()
    while (nb >= na) {
        d <- b[1] / a[1]
        b <- b - conv(a, c(d, rep(0, nb-na)))
        q <- c(q, d)
        b <- b[2:nb]
        nb <- nb -1
    }
    return(list(q = q, r = b))
}
back to top