Combining arrays of different row length

2 views (last 30 days)
ScGold
ScGold on 13 Feb 2019
Edited: Jan on 13 Feb 2019
I have 3 arrays:
A = [1;2;3]
B = [1;2;3;4]
C = [1;2]
I want to combine these to create a new array:
D =
1 1 1
2 2 2
3 3 NaN
NaN 4 NaN
Thank you!

Answers (2)

madhan ravi
madhan ravi on 13 Feb 2019
ABC={A,B,C};
MAX=max(cellfun(@numel,ABC));
D=cell2mat(cellfun(@(x)[x;nan(MAX-numel(x),1)],ABC,'un',0))

Jan
Jan on 13 Feb 2019
Edited: Jan on 13 Feb 2019
With a simple loop:
function A = CatWithPadding(varargin)
C = varargin;
nC = numel(C);
len = cellfun('prodofsize', C); % Faster than: @numel
A = nan(max(len), nC)
for k = 1:nC
A(1:len(k), k) = C{k}(:);
end
end
Now call this like:
M = CatWithPadding(A, B, C)

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!