83205 Accumulating different sized column vectors stored as a cell array into a matrix padded with NaNs

Imagine I have a series of different sized column vectors inside an array and want to group them into a matrix by padding the empty spaces with NaN. How can I do this?

There is already an answer to a very similar problem (accumulate cells of different lengths into a matrix in MATLAB?) but that solution deals with row vectors and my problem is with column vectors. One possible solution could be transposing each of the array components and then applying the above mentioned solution. However, I have no idea how to do this.

Also, speed is a bit of an issue so if possible take that into consideration.

You can just slightly tweak that answer you found to work for columns:

tcell = {[1,2,3]', [1,2,3,4,5]', [1,2,3,4,5,6]', ', []'}; %\\ ignore this comment, it's just for formatting in SO maxSize = max(cellfun(@numel,tcell)); fcn = @(x) [x; nan(maxSize-numel(x),1)]; cmat = cellfun(fcn,tcell,'UniformOutput',false); cmat = horzcat(cmat{:}) cmat = 1 1 1 1 NaN 2 2 2 NaN NaN 3 3 3 NaN NaN NaN 4 4 NaN NaN NaN 5 5 NaN NaN NaN NaN 6 NaN NaN

Or you could tweak this as an alternative:

cell2mat(cellfun(@(x)cat(1,x,NaN(maxSize-length(x),1)),tcell,'UniformOutput',false))