Octave/Matlab:扩展一个向量使其重复的向量?

Tom*_*Tom 91 matlab vector octave

有没有办法通过使矢量重复来扩展矢量?

>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl
Run Code Online (Sandbox Code Playgroud)

然后v10将是:

>v10
     1 2 1 2 1 2 1 2 1 2
Run Code Online (Sandbox Code Playgroud)

这应该适用于一般情况,而不仅仅是[1 2]

And*_*erd 137

你正在寻找的功能是repmat().

v10 = repmat(v, 1, 5)
Run Code Online (Sandbox Code Playgroud)


Den*_*din 6

显然,如果您知道要向哪个方向扩展矢量,则可以使用repmat.

但是,如果你想要一个总是在最长方向上重复向量的通用解决方案,那么repmat和indexing的这种组合应该可以解决问题:

 v10=v(repmat(1:length(v),1,5))
Run Code Online (Sandbox Code Playgroud)