As Adam says, the loop version may be faster. With a few comments it also would be clearer. You're actually probably better off getting rid of your original svd cellfun and generating the output you want directly with one loop.
Now, if you really want to get rid of the loop, you don't even need a cellfun. It gets hairy though, I'm not going to explain the details:
newCellL = permute(num2cell(cat(3, myCellL{:}), 1), [1 4 2 3]);
newCellSig = reshape(num2cell(diag(blkdiag(myCellSig{:}))), 1, 1, [], numel(myCellSig))
newCellR = permute(num2cell(cat(3, myCellR{:}), 1), [1 4 2 3]);
newOtpt = permute(reshape(num2cell(cat(2, newCellL, newCellSig, newCellR), 2), [], size(myCell, 1), size(myCell, 2)), [2 3 1]);
A lot of array concatenation, splitting and dimension manipulation (plus some diag(blkdiag) to get the diagonal of all the matrices in one go. It's possible you could optimise the first three permute so that the 4th permute is not required, but it hurts my head already enough as it is.
Best Answer