代码之家  ›  专栏  ›  技术社区  ›  Kapa11

MATLAB:复制数组中的零项

  •  0
  • Kapa11  · 技术社区  · 7 年前

    我得到一个大向量 vec 大小 n x 1 (带 n 数量巨大)。中的所有值 vec公司 0 1 。向量由大小不同的块组成 m 在每个块中,仅应包括这两个值中的一个。

    为了确保这一条件,我循环一个块中的每个起始元素,并将该值复制到相应块的所有条目中:

    for i = 1:m:n
         if vec(i) == 1
              vec(i:i+m-1) = 1;
         else
              vec(i:i+m-1) = 0;
         end
    end
    

    如何在不丢失循环的情况下实现这一点,以便更好地使用MATLABs矢量化并行化?提前感谢

    1 回复  |  直到 7 年前
        1
  •  5
  •   rahnema1    7 年前

    您可以使用 repelem :

    vec = repelem(vec(1:m:n), m);