1 function M = spblkdiag(blocks)
2 %
function M = spblkdiag(blocks)
4 %
function generating efficiently a sparse matrix containing
5 % subblocks blocks(:,:,i) as block i along the diagonal.
6 % this is 1000 times faster than blkdiag!!!!
8 % Bernard Haasdonk 31.8.2009
10 [n,m,k] = size(blocks);
12 row_ind = (1:n)'*ones(1,m*k);
13 row_offs =(ones(n*m,1)*(0:(k-1)))*n;
14 row_ind = row_ind(:)+row_offs(:);
16 col_ind = ones(n,1)*(1:(m*k));
19 M = sparse(row_ind,col_ind,blocks(:));%| \docupdate