- 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 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Willim
am 22 Mär. 2020
Kommentiert: Willim
am 22 Mär. 2020
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 Kommentare
Akzeptierte Antwort
Cris LaPierre
am 22 Mär. 2020
6 Kommentare
Cris LaPierre
am 22 Mär. 2020
Bearbeitet: Cris LaPierre
am 22 Mär. 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
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!