if loop that is not working properly, row should be deleted based on several criterias but do not
    6 views (last 30 days)
  
       Show older comments
    
hi,
I have a matrix with 8 columns and I would like to delete those rows where the value of column 8 exceeds 1.1 or is below 0.9 and apply a similar criteria on column 5, here is the respective code:
   while i < size(data8, 1)
      i = i + 1 ;
      if(data8(i,8)>1.1)
      data8(i,:) = [];
      elseif(data8(i,8)<0.9)
      data8(i,:) = [];
      elseif(data8(i,5)<5*1/365)
      data8(i,:) = [];
      elseif(data8(i,5)>120*1/365)
      data8(i,:) = [];
      end
   end
although the code is running, I get in the resulting matrix values in column 8 that exceeds 1.1 and are below 0.9, whan do I need to change?
0 Comments
Accepted Answer
  Image Analyst
      
      
 on 13 Apr 2013
        Try it this way
rowsToDelete = data(:,8) > 1.1 | data(:,8) < 0.9;
data(rowsToDelete, :) = [];
Do the same for column #5. You could combine column 5 into the calculation of rowsToDelete if you want.
2 Comments
  Image Analyst
      
      
 on 13 Apr 2013
				No. The code was all there was. The whole point of vectorizing it was to get rid of the while loop - and you put it back in. Don't use it. Try this, which I constructed to use sample data in the rang 0.8 - 1.2.
% Create array of numbers between 0.8 and 1.2.
data = .8 + .4 * rand(20,8)
% Display rows 8 and 5
data(:,8)
data(:,5)
% Find the rows to delete.
rowsToDelete8 = data(:,8) > 1.1 | data(:,8) < 0.9
rowsToDelete5 =  data(:,5) > 1.1 | data(:,5) < 0.9
rowsToDelete = rowsToDelete8 & rowsToDelete5
% Go ahead and delete them.
data(rowsToDelete, :) = [];
% Display final data.
data
More Answers (1)
  Locks
      
 on 13 Apr 2013
        3 Comments
  Image Analyst
      
      
 on 13 Apr 2013
				
      Edited: Image Analyst
      
      
 on 13 Apr 2013
  
			That's correct. If we're done, then mark my answer (not yours) as Accepted.
See Also
Categories
				Find more on Performance and Memory 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!
