MATLAB: How to position groups of matrices inside a bigger matrix

indexingmatrixmatrix manipulation

I have a program in which I have some matrices of varying size that runs through a piece of code, for the current moment i only have two matrices. What i want to know is how would i place the matrices 'M' in a bigger matrix of zeros in a way that the values always stay in the diagonal and the rest of the matrices are zeros. So, for example if a have two matrices with size 4×4 the matrix would be a 8×8 matrix with [1:4,1:4] and [5:8,5:8] being values and the rest zeros. I want to do it in a way that i can do it for n-matrices. Here is the code i use.
for iter=1:2
D=Stations{iter};
n=length(D);
c=[0;0;0;0];
rowvector=ones(1,n);
dt0=rowvector
dn=sqrt((D(1,:)-m0(2)).^2+(D(2,:)-m0(3)).^2+(D(3,:)-m0(4)).^2);
dtx = -(D(1,:)-m0(2))./(v.*dn);
dty = -(D(2,:)-m0(3))./(v.*dn);
dtz = -(D(3,:)-m0(4))./(v.*dn);
M=[dt0; dtx; dty; dtz];
end
'Stations' is a cell array i use to store the different matrices

Best Answer

blkdiag function is the tool you are looking for. Help it in MATLAB. Note you can use a loop within which the function is called iteratively to cope with n sub-matrices.