2010-03-11 14 views
5

Estoy tratando de crear una matriz que sea 3 x n, con cada una de las columnas siendo la misma. ¿Cuál es la forma más fácil de lograrlo? ¿Concatenación?MATLAB: Rellenar una matriz con cada columna siendo la misma

+0

No está claro. ¿Quieres [1 1 1; 2 2 2; 3 3 3] donde las columnas son idénticas o desea [1 2 3; 1 2 3; 1 2 3] donde cada columna tiene el mismo número? – MatlabDoug

+1

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

Respuesta

8

Después

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

es o

repmat(x,[1 n]) 

o

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

Yo diría que la solución basada en índices es el camino a seguir (y en general es más rápido). – gnovice

+0

Gracias. repmat es la palabra clave que estaba buscando, pero lo olvidé. – stanigator

3

(Octave se puede considerar como un/versión gratuita de código abierto de MATLAB)

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 

Uso repmat si el número de filas es grande.

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

Uso multiplicación con una matriz 1 x 3 de los

por ejemplo, x * [1 1 1]

Editar:

En 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

Esto da '[x x x]'. – kennytm

+0

Funciona en Octave - ver la edición – James

+0

Creo que @KennyTM podría significar que da '[x x x]' (donde 'x' es un vector de columna), cuando el OP quiere' [x; X; x] '(donde' x' es un vector de fila, como en su respuesta), pero la pregunta es ligeramente ambigua, de ahí mi respuesta. – Ramashalanka

Cuestiones relacionadas