Remove slices of 3D matrix

11 views (last 30 days)
Erfaneh
Erfaneh on 6 Sep 2014
Commented: Erfaneh on 6 Sep 2014
I have a binary 3D matrix with 400 slices. I want to remove the slices (0 to 100) and (300 to 400) and I just want to keep the slices (100 to 300). I used from following code for removing 100 first slices:
  • for i=1:100
  • A(:,:,i)=[];
  • end
But above syntax code didn't remove 100 first slices, it removed 100 slices but not from the first. Can any one tell me where is the problem?

Accepted Answer

Roger Stafford
Roger Stafford on 6 Sep 2014
Edited: Roger Stafford on 6 Sep 2014
That is because after removing the first "slice", slice number 2 becomes number 1 and when you attempt to remove slice 2 it is actually the original slice 3 that is taken out. In other words in terms of original slice numbers you are removing the first 100 odd-numbered slices, 1,3,5,7,.... Also the slice numbers you quote are inconsistent - there are 101 slices in 0 to 100 and 300 to 400 and you would have 201 left in 100 to 300. Also there is no slice 0 in terms of index numbers.
I'll assume you want to remove the first and last 100 leaving the middle 200. Do this:
A(:,:,[1:100,301:400]) = [];
  1 Comment
Erfaneh
Erfaneh on 6 Sep 2014
Thank you very much. My problem has been solved.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!