web-dev-qa-db-ja.com

Octave / Matlab:ベクトルを拡張して繰り返しますか?

ベクトルを繰り返すことでベクトルを拡張する方法はありますか?

>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in Perl

V10は次のようになります。

>v10
     1 2 1 2 1 2 1 2 1 2

これは、[1 2]だけでなく、一般的なケースでも機能するはずです。

89
Tom

探している関数は repmat() です。

v10 = repmat(v, 1, 5)
137
Andrew Shepherd

明らかに、repmatは、ベクトルをどの方向に拡張したいかがわかっている場合の方法です。

ただし、ベクトルを常に最も長い方向に繰り返す一般的な解決策が必要な場合は、このrepmatとインデックス作成の組み合わせでうまくいくはずです。

 v10=v(repmat(1:length(v),1,5))
6