Deleting Rows of a Matrix HELP

I'm trying to delete the following rows within a matrix - ones in which the second column contains a 0. Importing the text file Data.txt, which has about 2901 rows of time readings, and associated pressure readings. Some of the pressure readings are 0, and we need to delete these readings. My code gives an assignment dimension mismatch error and I have not clue why. Could someone please help me out? Thanks and here's my code:
for row = 1:length(Data)
if Data(row,2) == 0
Data(row,2) = [];
end
end

 Accepted Answer

James Tursa
James Tursa on 7 Dec 2015
Edited: James Tursa on 7 Dec 2015
When you delete rows in a for loop, the indexing changes so the for loop indexing is no longer valid. Instead of using a for loop, you can use logical indexing. E.g.,
Data(Data(:,2)==0,:) = [];
The reason this line of yours was failing was because you were trying to delete only one element of the matrix, and you can't do that:
Data(row,2) = [];

3 Comments

Ah I see what you mean, the length decreases, preventing me from accessing other elements. Thanks a ton
How would I determine the number of corrupted points without a for loop though?
number_corrupted = sum(Data(:,2)==0);

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!