MATLAB Answers

How can I select n rows every m rows

1 view (last 30 days)
QuanCCC
QuanCCC on 22 Aug 2018
Commented: QuanCCC on 23 Aug 2018
It's a select several rows/extract rows in data question. My data looks like this:
a1 b1 c1
a2 b2 c2
a3 b3 c3
a10 b10 c10
a20 b20 c20
a30 b30 c30
a1 b1 c1
a2 b2 c2
a3 b3 c3
a10 b10 c10
a20 b20 c20
a30 b30 c30
a1 b1 c1
a2 b2 c2
a3 b3 c3
a10 b10 c10
a20 b20 c20
a30 b30 c30
I need to extract into a new data which only includes
a10 b10 c10
a20 b20 c20
a30 b30 c30
a10 b10 c10
a20 b20 c20
a30 b30 c30
a10 b10 c10
a20 b20 c20
a30 b30 c30
How can I do that? Thank you.

  0 Comments

Sign in to comment.

Accepted Answer

Matt J
Matt J on 22 Aug 2018
Edited: Matt J on 22 Aug 2018
This will work for any m,n.
m=3;
n=3;
e=1:size(yourdata,1);
idx=e( (m+n):(m+n):end ) - (n-1:-1:0).' ;
newdata = yourdata(idx,:);

  1 Comment

QuanCCC
QuanCCC on 23 Aug 2018
This is perfect. Thank you so much.

Sign in to comment.

More Answers (1)

Matt J
Matt J on 22 Aug 2018
Edited: Matt J on 22 Aug 2018
One way is by downloading MAT2TILES,
A=mat2tiles(yourdata,[3,3]);
newdata=cell2mat(A(2:2:end));

  1 Comment

QuanCCC
QuanCCC on 22 Aug 2018
Thank you Matt for editing my question. Now it looks better. But I just happened to give an example of every 3*3 subarray data. The actual data I have is: 27060 lines I don't need, then the next 12 lines I need to select, then the next 27060 lines I don't need, then the 12 lines I need. This doesn't sound like a sub-arrays.

Sign in to comment.

Sign in to answer this question.

Products


Release

R2017b