https://github.com/cran/pracma
Tip revision: a7001ff1805634d18a10fa371b38dbe3e48f8c9e authored by HwB on 30 October 2011, 00:00:00 UTC
version 0.8.1
version 0.8.1
Tip revision: a7001ff
blkdiag.R
blkdiag <-function(...) {
dots <- list(...)
if (! all(sapply(dots, is.matrix)) ||
! all(sapply(dots, is.numeric)) )
stop("All input arguments in '...' must be numeric matrices")
nrows <- sapply(dots, nrow)
ncols <- sapply(dots, ncol)
if (any(nrows == 0) || any(ncols == 0))
stop("All input matrices '...' must be non-empty.")
n <- sum(nrows)
N <- c(0, cumsum(nrows))
m <- sum(ncols)
M <- c(0, cumsum(ncols))
A <- matrix(0, nrow = n, ncol = m)
k <- length(dots)
for (i in 1:k) {
A[(N[i]+1):N[i+1], (M[i]+1):M[i+1]] <- dots[[i]]
}
return(A)
}