MATLAB: Sparse Block Matrix Construction

matrix manipulationsparse

I want to construct a matrix that looks like
X = [0, A,
B, 0]
Where the A and B blocks are, in themselves, sparse matrices. I already have code for generating the A and B blocks, and I was hoping to reuse that. Is there a way I can then create the X matrix so that it is also sparse?

Best Answer

[Am,An] = size(A);
[Bm,Bn] = size(B);
X = spalloc(Am+Bm,An+Bn,nnz(A)+nnz(B));
X(Am+1:Am+Bm,1:Bn) = B;
X(1:Am,Bn+1:An+Bn) = A;