MATLAB Answers

Keeping rows of a matrix between two indicies.

1 view (last 30 days)
Jason
Jason on 1 Feb 2018
Commented: Jason on 1 Feb 2018
Hi. I want to remove all rows from a matrix below idx1 and above idx2. that is I only want to keep rows that are between idx1 and idx2.
I have used this to do the 1st part:
C2(1:idx1,:) = []; %Trim the first rows upto idx1
But can't quite work out how to include removing above idx2 as the indexes will have changed now the above removal has occurred?
Thanks

  0 Comments

Sign in to comment.

Accepted Answer

Birdman
Birdman on 1 Feb 2018
Edited: Birdman on 1 Feb 2018
One approach:
A=randi([1 5],15,5);%demo data
idx2=3;idx1=8;
A=A(idx2:idx1,:)

  3 Comments

Jason
Jason on 1 Feb 2018
Doesn't this remove all rows between the two indicies?
Birdman
Birdman on 1 Feb 2018
I changed it. Now check the answer.

Sign in to comment.

More Answers (1)

Jos (10584)
Jos (10584) on 1 Feb 2018
I just want to point you to the following logic: if you start removing at the end, no indices will change:
A(ix2:end,:) = []
A(1:ix1,:) = []
However, you are much better off using Birdman's approach:
A = A(ix1+1:ix2-1,:) % include ix1 and ix2 for removal, per your example

Community Treasure Hunt

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

Start Hunting!