conditionally deleting matrix rows

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]

 采纳的回答

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 个评论

thanks a lot for this great answer,
what about ... if the condition (A>50 or A<30)
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

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Multidimensional Arrays 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by