我得到一个大向量 vec 大小 n x 1 (带 n 数量巨大)。中的所有值 vec公司 是 0 或 1 。向量由大小不同的块组成 m 在每个块中,仅应包括这两个值中的一个。
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矢量化并行化?提前感谢
您可以使用 repelem :
repelem
vec = repelem(vec(1:m:n), m);