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

 採用された回答

the cyclist
the cyclist 2011 年 7 月 14 日

0 投票

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 件のコメント

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

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeIntroduction to Installation and Licensing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by