我有一个矩阵A = [1 2 3; 2 5 9; 2 3 4]。现在我想搜索矩阵的所有元素。应检测任何大于8的元素,并删除与该元素相关的整行。 如在该实施例中A(2,3)> 8。因此,在最终输出矩阵中,应删除第2行,输出矩阵为B = [1,2,3; 2,3,4]
答案 0 :(得分:1)
Shai的答案的反转通常在循环中更快:
B = A( all(A<=8,2), : );
或
B = A( all(A<9,2), : );
如果你愿意的话。
请注意,对于较新的Matlab版本,此可能不正确(R2012a我认为对具有矩阵删除的循环具有特定的JIT优化)。然而,这是一个更安全的赌注,可能更直观。
答案 1 :(得分:0)
使用逻辑索引和any
命令
>> selRowToDelete = any( A > 8, 2 ); % any value on dim 2 (rows)
>> A( selRowToDelete, : ) = []; % remove the rows