MATLAB Answers

Jason
0

Keeping rows of a matrix between two indicies.

Asked by Jason
on 1 Feb 2018
Latest activity Commented on by 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.

2 Answers

Answer by Birdman
on 1 Feb 2018
Edited by Birdman
on 1 Feb 2018
 Accepted Answer

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

  3 Comments

Doesn't this remove all rows between the two indicies?
I changed it. Now check the answer.
Perfect, thanks Jason

Sign in to comment.


Answer by 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

  1 Comment

Thankyou for this

Sign in to comment.