Matlab - 根据出现数组复制数组值

时间:2015-03-15 14:19:32

标签: arrays matlab replicate

例如,A = [19 20 21 22 23 24 25]; B = [2 0 3 0 0 0 2];

我们如何获得一个新数组,相应地重复B中的每个值X次?

例如,这里的答案是:[19 19 21 21 21 25 25]

请注意,我只允许for循环并结合repmat来电。

1 个答案:

答案 0 :(得分:0)

如果您只允许使用repmatfor循环,则可以执行以下操作:

S = []; 
for idx = 1 : length(B) 
    S = [S repmat(A(idx), 1, B(idx))]; 
end

S最初是一个空白数组,然后与B(或A中的数值一样多,因为它们的长度相等),只需连接{ {1}} S中的每个值都会被A中的相应数字重复。 B将包含输出。

通过运行上面的例子,我得到:

S

但是,我强烈建议您使用更多矢量化方法。我会把它留给你作为练习。

祝你好运!