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

 采纳的回答

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 个评论

a = arrayfun(@(i1)A(:,i1),1:size(A,2),'un',0)
@Cyclist: It is worth to include the pre-allocation "a = cell(1, numberColumns)".
@Jan: How could I neglect that?! I've edited the code to include preallocation.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Software Development Tools 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by