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]

 Réponse acceptée

Image Analyst
Image Analyst le 13 Juil 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 commentaires

Abdelwahab Fawzy
Abdelwahab Fawzy le 13 Juil 2016
thanks a lot for this great answer,
what about ... if the condition (A>50 or A<30)
rowsToDelete = any(A>50 | A<30, 2)
Romain Hautier
Romain Hautier le 19 Fév 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.
A = [1 2 3; 3 0 0; 1 2 0]
A = 3×3
1 2 3 3 0 0 1 2 0
rowsToDelete = any(A == 0, 2)
rowsToDelete = 3×1 logical array
0 1 1
columnsToDelete = any(A == 0, 1)
columnsToDelete = 1×3 logical array
0 1 1
A(rowsToDelete, :) = [];
A(:, columnsToDelete) = []
A = 1

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

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

Start Hunting!

Translated by