2010-03-17 34 views
79

有沒有辦法通過重複它自己來擴展向量?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]

+0

您可以使用KRON - 該Kroencker產品運營商。例如'v = [1 2]'和'v100 = kron(ones(1,100),v)'是向量'v100 = [v v ... v]'(100次)。如果你想連接一些列向量'y'和自己'K'次,使用'yK = kron(ones(K,1),y)'。 – 2013-05-26 02:56:36

回答

127

你要找的功能是repmat()

v10 = repmat(v, 1, 5) 
+0

是的,非常感謝。 – Tom 2010-03-17 04:12:56

+1

鏈接八度文檔:[http://www.gnu.org/software/octave/doc/interpreter/Special-Utility-Matrices.html#Special-Utility-Matrices](http://www.gnu.org/軟件/倍頻/ DOC /解釋/特殊工具 - Matrices.html#特殊效用矩陣) – Paweld2 2013-08-24 13:52:45

6

顯然,如果您知道要向哪個方向擴展矢量,repmat就是要走的路。

但是,如果你想總是重複最長方向的矢量的通用解決方案,repmat和索引的這個組合應該做的伎倆:

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