Decomposing Matrix into Column Matrices

I have a large nxm matrix, lets call it A, and I want to break it up so that each column of A is now its own nx1 column matrix. So for example if I have:
A=[1 2 3; 4 5 6; 7 8 9]
What I want is:
A1=[1 ; 4 ; 7] A2=[2 ; 5 ; 8] A3=[3 ; 6 ; 9]
Is there some function or program that will do this for me?
Thanks

 Respuesta aceptada

the cyclist
the cyclist el 14 de Jul. de 2011
I recommend using cell arrays, rather than naming your variables A1, A2, etc:
numberColumns = size(A,2);
a = cell(1, numberColumns);
for nc = 1:numberColumns
a{nc} = A(:,nc); % Note the curly brackets for a{nc}
end

5 comentarios

Oleg Komarov
Oleg Komarov el 14 de Jul. de 2011
See also faq 4.6.
Andrei Bobrov
Andrei Bobrov el 14 de Jul. de 2011
a = arrayfun(@(i1)A(:,i1),1:size(A,2),'un',0)
Jan
Jan el 14 de Jul. de 2011
@Cyclist: It is worth to include the pre-allocation "a = cell(1, numberColumns)".
the cyclist
the cyclist el 14 de Jul. de 2011
@Jan: How could I neglect that?! I've edited the code to include preallocation.
David
David el 15 de Jul. de 2011
Thanks a lot.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Software Development Tools en Centro de ayuda y File Exchange.

Preguntada:

el 14 de Jul. de 2011

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by