How can I merge many rows of different lengths into a matrix?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Rupeng Li
le 14 Déc 2018
Réponse apportée : Omer Yasin Birey
le 14 Déc 2018
Hi everyone! I encountered a problem in merging many rows of different lengths into a matrix, for example,
A=[1:2];
B=[3:7];
C=[1:10];
What I want to achieve is to have the following matrix:
D=[A;B;C]
% which does not work
% to be in the format of following
D=[1,2,0,0,0,0,0,0,0,0;
3,4,5,6,7,0,0,0,0,0;
1,2,3,4,5,6,7,8,9,10]
Does any one have a good way of filling zeros? The speed is also a concern as such operations would be repeated for millions of times .
Any help would be appreciated!
0 commentaires
Réponse acceptée
Stephen23
le 14 Déc 2018
>> C = {1:2,3:7,1:10};
>> L = cellfun('length',C);
>> M = zeros(numel(C),max(L));
>> for k = 1:numel(C), M(k,1:L(k)) = C{k}; end
>> M
M =
1 2 0 0 0 0 0 0 0 0
3 4 5 6 7 0 0 0 0 0
1 2 3 4 5 6 7 8 9 10
0 commentaires
Plus de réponses (1)
Omer Yasin Birey
le 14 Déc 2018
Hi Rupeng, as far as I understand you want to work with arrays. So you can use this code below
A=[1:2];
B=[3:7];
C=[1:10];
dimAdjustforA = max(max(length(A),length(B)),length(C))-length(A);%you have to set the dimension
A = [A zeros(dimAdjustforA,1)'];
dimAdjustforB = length(A)-length(B)%again to make it same dimension with the maximum one
B = [B zeros(dimAdjustforB,1)'];
D = [A;B;C]
0 commentaires
Voir également
Catégories
En savoir plus sur Matrices and Arrays 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!