【问题标题】:Removing multiple elements from a matrix in octave从八度音阶中的矩阵中删除多个元素
【发布时间】:2014-07-20 04:53:24
【问题描述】:

假设我有一个矩阵 A。

A = [ 2 2 2; 
      3 3 3; 
      4 4 4; 
      5 5 5; 
      6 6 6]

还有

B = [0 1 0 1 0]

我想从A 中删除所有行,其中B == 1

所以在手术后我希望A成为

[ 2 2 2; 4 4 4; 6 6 6;]

我该怎么做呢?

【问题讨论】:

  • 这种逻辑索引方法可能比实际删除这些行更好,如果它适用于八度 - A = A(B~=1,:)。但如果你必须使用空数组分配 - A(B==1,:)=[]
  • 为什么 A(B, :) = [] 不起作用,但 A(B==1, :) = [] 起作用 :|我检查了 size(B) 和 size(B==1) 都是 1 5 :|
  • 因为 B 不是允许逻辑索引的逻辑数组。将 B 转换为逻辑数组,然后执行 A(B, :) = [] 如果你想让它以这种方式工作。

标签: matlab matrix octave


【解决方案1】:

使用逻辑索引

A(B~=1,:);

查看代码ideone

【讨论】:

    【解决方案2】:

    嗯,一个很简单的方法是

    for x = 1..length(B) if (B(x) == 1) A(x,:)=[] endif end

    【讨论】:

    • 除了使用循环之外没有其他选择吗?我检查了 A(B', :) = [] 但不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2022-08-15
    • 2014-12-25
    • 2014-08-03
    • 2014-09-21
    • 2012-02-13
    • 2021-04-23
    相关资源
    最近更新 更多