2010-03-11 19 views
5

Ich versuche, eine Matrix zu erstellen, die 3 x n ist, wobei jede der Spalten identisch ist. Was ist der einfachste Weg, um es zu erreichen? Verkettung?MATLAB: Füllen einer Matrix mit jeder Spalte die gleiche

+0

Es ist nicht klar. Willst du [1 1 1; 2 2 2; 3 3 3] wo die Spalten identisch sind oder wollen [1 2 3; 1 2 3; 1 2 3] wo jede Spalte die gleiche Nummer hat? – MatlabDoug

+1

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

Antwort

8

Nach

n=7 
x=[1;2;3] 

es ist entweder

repmat(x,[1 n]) 

oder

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

Ich würde sagen, die indexbasierte Lösung ist der Weg zu gehen (und es ist in der Regel schneller). – gnovice

+0

Danke. Repmat ist das Keyword, nach dem ich gesucht habe, aber vergessen. – stanigator

3

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 

Verwenden repmat, wenn die Anzahl der Zeilen (Octave kann als Open-Source/freie Version von MATLAB in Betracht gezogen wird) ist groß.

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

Verwenden Multiplikation mit einem 1 x 3-Matrix von Einsen

zB x * [1 1 1]

Edit:

In 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

Dies ergibt '[x x x]'. – kennytm

+0

Es funktioniert in Octave - siehe die Bearbeitung – James

+0

Ich denke @KennyTM könnte bedeuten, dass es gibt [x x x] '(wo x ist ein Spaltenvektor), wenn das OP will' [X; x; x] '(wo' x' ein Zeilenvektor ist, wie in seiner Antwort), aber die Frage ist ein wenig mehrdeutig, daher meine Antwort. – Ramashalanka

Verwandte Themen