https://github.com/cran/pracma
Tip revision: 63e8a52ae6668e736720c89691352d6dc3bc9eb1 authored by HwB on 17 January 2012, 00:00:00 UTC
version 0.9.6
version 0.9.6
Tip revision: 63e8a52
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)
}