【问题标题】:Matrix row operations矩阵行操作
【发布时间】: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


    【解决方案1】:

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

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

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

    如果你愿意。

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

    【讨论】:

      【解决方案2】:

      使用逻辑索引和any 命令

      >> selRowToDelete = any( A > 8, 2 ); % any value on dim 2 (rows)
      >> A( selRowToDelete, : ) = []; % remove the rows
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 2015-10-13
        相关资源
        最近更新 更多