MATLAB:复制数组中的零条目

Kap*_*a11 0 matlab loops vectorization

我有一个大矢量vec大小n x 1(与n一个庞大的数字).所有值vec都是01.向量由大小块组成m,在每个块中,只包括这两个值中的一个.

为了确保这种情况,我遍历块中的每个start元素并将该值复制到相应块的所有条目中:

for i = 1:m:n
     if vec(i) == 1
          vec(i:i+m-1) = 1;
     else
          vec(i:i+m-1) = 0;
     end
end
Run Code Online (Sandbox Code Playgroud)

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

rah*_*ma1 5

你可以使用repelem:

vec = repelem(vec(1:m:n), m);
Run Code Online (Sandbox Code Playgroud)