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


93

それを繰り返すようにしてベクトルを拡張する方法はありますか?

>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]だけでなく、一般的なケースでも機能するはずです。


kron-Kroenckerプロダクトオペレーターを使用できます。例えばv=[1 2]and v100=kron(ones(1,100),v)はベクトルv100=[v v ... v](100回)です。一部の列ベクトルyK時間自体と連結する場合は、を使用しますyK=kron(ones(K,1),y)
Pantelis Sopasakis 2013年

回答:



6

明らかに、ベクトルを展開する方向がわかっている場合は、repmatが適しています。

ただし、常に最も長い方向にベクトルを繰り返す一般的なソリューションが必要な場合は、repmatとインデックス付けのこの組み合わせでうまくいくはずです。

 v10=v(repmat(1:length(v),1,5))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.