Question

I have a double variable with 3 columns. Sometimes, in the second column I obtain the value zero. In case it happens I want to completely erase that line. For instance:

12346 67 89

1245 0 765

56 0 99

19862 8 675

What I would like to get:

12346 67 89

19862 8 675

Thanks in advance for your help.

Was it helpful?

Solution

This is generally done using logical indexing:

A = [12346 67 89
     1245  0  765
     56    0  99
     19862 8  675];

mask = (A(:,2) ~= 0);
ans = A(mask, :)

The same but by deleting elements from the original array:

mask = (A(:,2) == 0);
A(mask, :) = []

A very similar question: How can you remove matrix rows in Matlab based on some criteria?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top