0

我有一个矩阵 A = [1 2 3;2 5 9;2 3 4]。现在我想搜索矩阵的所有元素。应检测发现大于 8 的任何元素,并应删除与该元素有关的整行。如本例中 A(2,3)>8。因此,在最终的输出矩阵中,第 2 行应该被删除,输出矩阵为 B = [1,2,3;2,3,4]

4

2 回答 2

1

Shai 的答案通常在循环中更快:

B = A( all(A<=8,2), : );

或者

B = A( all(A<9,2), : );

如果你愿意。

请注意,在较新的 Matlab 版本上可能不是这样(我相信 R2012a 对带有矩阵删除的循环进行了特定的 JIT 优化)。尽管如此,这是一个更安全的选择,并且可能更直观。

于 2013-07-01T08:44:51.737 回答
0

使用逻辑索引和any命令

>> selRowToDelete = any( A > 8, 2 ); % any value on dim 2 (rows)
>> A( selRowToDelete, : ) = []; % remove the rows
于 2013-07-01T08:38:02.370 回答