MATLAB: Cell Array to Matrix but keep zeros

cell arraymatrix manipulation

Hello! So my problem is that I have a tridiagonal cell array, say
x y z [] [] []
[] x y z [] []
[] [] x y z []
[] [] [] x y z
Where each tridiagonal element (x, y, and z) is a 2×2 matrix. I want to use the cell2mat function to create a matrix and make each cell array [] element a 2×2 matrix of zeros (so [] -> [0 0;0 0]). So I would end up going from a NxN cell array to a 4Nx4N matrix. When I use cell2mat, however, the []'s are removed and the matrix becomes disordered. Could anyone suggest a tip to make this conversion possible? Thank you! (and thanks for reading, either way)

Best Answer

Where C is your cell array:
C(cellfun('isempty',C)) = {[0,0;0,0]};
out = cell2mat(C);
Here is a complete working simplified example:
>> C = {[1,2;3,4],[];[],[5,6;7,8]};
>> C(cellfun('isempty',C)) = {[0,0;0,0]};
>> cell2mat(C)
ans =
1 2 0 0
3 4 0 0
0 0 5 6
0 0 7 8