【发布时间】:2013-07-02 18:04:21
【问题描述】:
我有一个矩阵 A = [1 2 3;2 5 9;2 3 4]。现在我想搜索矩阵的所有元素。应检测发现大于 8 的任何元素,并应删除与该元素有关的整行。 如本例中 A(2,3)>8。因此,在最终的输出矩阵中,第 2 行应该被删除,输出矩阵为 B = [1,2,3;2,3,4]
【问题讨论】:
标签: matlab matrix operations
我有一个矩阵 A = [1 2 3;2 5 9;2 3 4]。现在我想搜索矩阵的所有元素。应检测发现大于 8 的任何元素,并应删除与该元素有关的整行。 如本例中 A(2,3)>8。因此,在最终的输出矩阵中,第 2 行应该被删除,输出矩阵为 B = [1,2,3;2,3,4]
【问题讨论】:
标签: matlab matrix operations
Shai 的答案在循环中通常更快:
B = A( all(A<=8,2), : );
或
B = A( all(A<9,2), : );
如果你愿意。
请注意,这可能不适用于较新的 Matlab 版本(我相信 R2012a 对带有矩阵删除的循环进行了特定的 JIT 优化)。尽管如此,这是一个更安全的选择,并且可能更直观。
【讨论】:
使用逻辑索引和any 命令
>> selRowToDelete = any( A > 8, 2 ); % any value on dim 2 (rows)
>> A( selRowToDelete, : ) = []; % remove the rows
【讨论】: