Loop through Matrix, to create multiple matrices from every nth row

1 view (last 30 days)
Hi.
I have a very large matrix (1600x19). Call this matrix A.
I want to create new matrices from this, t(i), and save them as new matrices.
I want the first new matrix to be contructed from rows 1, 17, 33, 49 etc... so for this, by my reckoning, I would write t1=A(1:16:end,:). Then the next matrix to consist of row 2, 18, 34, 50 etc.. And so on.
I would like to create a loop that would create 16 matrices this way.
I have started with
while i<17
t(i)=A(i:16:end,:)
end
I'm aware this is lacking something, just don't know what!! Any help is much appreciated, especially if there's some explanation of the logic. New to looping :)

Accepted Answer

Sean de Wolski
Sean de Wolski on 15 Sep 2014
Edited: Sean de Wolski on 15 Sep 2014
What do you want to do with these matrices? Often, for this I would suggest crating a 16x19xp array where each slice in the third dimension is the sub arrays you want. Then you can work on those slices as necessary:
x = rand(1600,19);
x3d = permute(reshape(x.',19,[],16),[3 1 2]);
Will build the three d matrix. Now for the 17th "sub array"
x3d(:,:,17)

More Answers (0)

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!