delete certain elements in a matrix
Show older comments
Is there any way to delete certain rows(with a pattern) in a matrix
like to delete rows 1,6,11,21,26,..... using a loop
Thanks.
Accepted Answer
More Answers (2)
In a loop? Not really.
All at once? Absolutely.
DATA = rand(50,5);
rowsToDelete = [1,6,11,21,26];
DATA(rowsToDelete,:) = [];
If you mean that your rows to delete has the pattern of rows 1,6,11,16, etc, then just do this:
numRows = size(DATA,1);
rowsToDelete = [1:10:numRows 6:10:numRows];
DATA(rowsToDelete,:) = [];
3 Comments
dav
on 14 Mar 2013
Jan
on 14 Mar 2013
This is much faster than a loop for large arrays. Shrinking arrays in a loop has the same drawback as letting them grow: In each iteration the new array must be allocated and the contents of the old one is copied. This is very expensive.
dav
on 14 Mar 2013
Jan
on 14 Mar 2013
Alternative to Sven's approach:
Data = rand(50,5);
index = false(1, 50);
index(1:10:end) = true;
index(6:10:end) = true;
Data(index, :) = [];
Categories
Find more on Loops and Conditional Statements 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!