Combining arrays of different row length
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
madhan ravi
le 13 Fév 2019
ABC={A,B,C};
MAX=max(cellfun(@numel,ABC));
D=cell2mat(cellfun(@(x)[x;nan(MAX-numel(x),1)],ABC,'un',0))
0 commentaires
Jan
le 13 Fév 2019
Modifié(e) : Jan
le 13 Fév 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 commentaires
Voir également
Catégories
En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!