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]

 Akzeptierte Antwort

Image Analyst
Image Analyst am 13 Jul. 2016

0 Stimmen

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 Kommentare

Abdelwahab Fawzy
Abdelwahab Fawzy am 13 Jul. 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 am 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.
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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Noch keine Tags eingegeben.

Community Treasure Hunt

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

Start Hunting!

Translated by