Combining arrays of different row length

2 visualizaciones (últimos 30 días)
ScGold
ScGold el 13 de Feb. de 2019
Editada: Jan el 13 de Feb. de 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!

Respuestas (2)

madhan ravi
madhan ravi el 13 de Feb. de 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 el 13 de Feb. de 2019
Editada: Jan el 13 de Feb. de 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)

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by