conditionally deleting matrix rows
    5 views (last 30 days)
  
       Show older comments
    
    Abdelwahab Fawzy
 on 13 Jul 2016
  
    
    
    
    
    Commented: Image Analyst
      
      
 on 19 Feb 2022
            Hi all,
I wish to delete matrix rows according to a condition imposed over its columns. let assume the matrix is of 10x2 (rows x columns) size.
A= [16 45; 79 8; 31 23; 53 91; 17 15; 60 83; 26 54; 65 100; 69 8; 75 44]
I want to delete the row if either A(i,1) or A(i,2) is larger than 50
A= [16 45; 31 23; 17 15]
0 Comments
Accepted Answer
  Image Analyst
      
      
 on 13 Jul 2016
        Try this:
A= [16 45; 79 8; 31 23; 53 91; 17 15; 60 83; 26 54; 65 100; 69 8; 75 44]
rowsToDelete = any(A>50, 2)
A(rowsToDelete,:) = []
4 Comments
  Romain Hautier
 on 19 Feb 2022
				Hello,
I know it has been a long time since you answered but I have an additional question. Is it possible to delete rows and colums satisfying a condition all at once? Say I have a matrix A = [1 2 3; 3 0 0; 1 2 0], would I be able to delete all rows and columns containing a 0 all at once to be left with A = [1]? 
Thank you in advance.
  Image Analyst
      
      
 on 19 Feb 2022
				A = [1 2 3; 3 0 0; 1 2 0]
rowsToDelete = any(A == 0, 2)
columnsToDelete = any(A == 0, 1)
A(rowsToDelete, :) = [];
A(:, columnsToDelete) = []
More Answers (0)
See Also
Categories
				Find more on Multidimensional Arrays 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!