conditionally deleting matrix rows
19 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 Programmatic Model Editing 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!