- The number of elements can't change, meaning the product of the dimensions of your array have to exactly match the product of the dimensions of your array.
- Each row/column will have the same number of elements (unless you want to get into cell arrays)
How to repshape array to matrix with different length of each row ?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Lets assume we have array M with size 1*100
M= [1 2 3 4 5 6 7 8 9 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 9 2 ....]
I need to rephase it to B matrix that have 12 rows with max column 9
B = [1 2 3 4 5 6 7 8 9 ; 0 1 1 1 1 1 1 1 NAN ; 1 1 2 2 2 2 2 2 9 2; ... etc]
if we notice the first row is 1*9
second row is 1*8
third row is 1*10
and so on until we fill all the 12 rows. The sizes for the rows [9 8 10 8 9 8 8 8 8 9 8 7]
I just make up this example becuase my array is too long and I need to divid it depend on three numbers which is 28, 31,30
I tried to make if loop to implmemt it but I cannot it's completely worng.
0 commentaires
Réponse acceptée
Cris LaPierre
le 22 Mar 2020
6 commentaires
Cris LaPierre
le 22 Mar 2020
Modifié(e) : Cris LaPierre
le 22 Mar 2020
Here's a sample assuming the vector is 1x100
% Create dummy data
test = randi(20,[1 100]);
brks = [9 8 10 8 9 8 8 8 8 9 8 7]
ind = [0 cumsum(brks)]
% preallocate vector with NaNs
matrix = nan([12 max(brks)])
for r = 1:length(brks)
matrix(r,1:brks(r)) = test((ind(r)+1):ind(r+1));
end
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Resizing and Reshaping 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!