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

 Akzeptierte Antwort

the cyclist
the cyclist am 14 Jul. 2011

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by