2010-03-11 16 views
5

3 x n olan bir matris oluşturmaya çalışıyorum, her bir sütun aynı. Bunu başarmanın en kolay yolu nedir? Birleştirme?MATLAB: Her sütun aynı olan bir matris doldurma

+0

belli değildir bu. İstermisiniz [1 1 1; 2 2 2; 3 3 3] sütunların aynı olduğu ya da [1 2 3; 1 2 3; 1 2 3] istediğiniz her sütunun aynı sayı olduğu yer? – MatlabDoug

+1

Benzer Q: http://stackoverflow.com/questions/2209207/producing-2d-array-from-a-1d-array-in-matlab – Amro

cevap

8

sonra

o da

repmat(x,[1 n]) 

veya

x(:,ones(1,n)) 
+0

Dizin tabanlı çözümün gitmenin yolu olduğunu söyleyebilirim (ve genellikle daha hızlıdır). – gnovice

+0

Teşekkürler. repmat, aradığım anahtar kelimedir, ancak unutmuştur. – stanigator

3

satır sayısı büyükse

octave-3.0.3:2> rowvec = [1:10] 
rowvec = 

    1 2 3 4 5 6 7 8 9 10 

octave-3.0.3:3> [rowvec; rowvec; rowvec] 
ans = 

    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 

Kullanım repmat (Octave MATLAB bir açık kaynak/ücretsiz versiyonu olarak düşünülebilir). olanları 1 x 3 matris

örneğin sahip

octave-3.0.3:7> repmat(rowvec, 10, 1) 
ans = 

    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
    1 2 3 4 5 6 7 8 9 10 
2

kullanımı çarpma x * [1 1 1]

Düzenleme: Octave

:

octave-3.0.3.exe:1> x = [1;2;3;4] 
x = 

    1 
    2 
    3 
    4 


octave-3.0.3.exe:5> x * [1 1 1] 
ans = 

    1 1 1 
    2 2 2 
    3 3 3 
    4 4 4 
+0

Bu, [x x x] 'verir. – kennytm

+0

Octave'de çalışır - bkz. Düzenleme – James

+0

@KennyTM, [x x x] '(burada x' bir sütun vektörüdür) verirken, OP istediğinde [x; x; x] '(x', cevabında olduğu gibi bir satır vektörüdür), fakat soru biraz belirsizdir, dolayısıyla cevabım. – Ramashalanka