【问题标题】:Passing certain values of a matrix usi a logical mask使用逻辑掩码传递矩阵的某些值
【发布时间】:2017-03-17 16:38:06
【问题描述】:

假设我有一个逻辑矩阵MxN

mask=[0 0 0 0 0;
     0 1 1 0 0;
     0 1 1 0 0;
     0 0 0 0 0;
     0 0 0 0 0];

在这种情况下,M=N=5。 第二个矩阵A,大小为“MxNx3”(RGB 图像)。我想传递一个关于掩码的函数值A。例如所有不属于掩码的值:

   foo(A(~mask));  

这行代码肯定没用,因为mask 只给了我一种 RGB 颜色的索引。

  • 这样做的正确方法是什么?
  • 我可以只用一条线吗?

【问题讨论】:

    标签: matlab indices


    【解决方案1】:

    您可以使用repmat 在三维中重复您的掩码 3 次。这将创建一个nnz(~mask) * 3 元素向量。您可以重塑 repmat 操作的结果,使行是掩码中的 true 元素,而列是第三维

    foo(reshape(A(~repmat(mask, [1 1 3])), [], 3))
    

    您也可以执行this answer 之类的操作来完成类似的操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多