Combining arrays of different row length
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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!
0 comentarios
Respuestas (2)
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))
0 comentarios
Jan
el 13 de Feb. de 2019
Editada: Jan
el 13 de Feb. de 2019
See: FileExchange: padcat
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)
0 comentarios
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!