Pulling matrix column data out of a cell

1 view (last 30 days)
I have a cell array with 29 matrices that are each 500x6 doubles. I want to take the first column of each matrix and load them into a single matrix that is 500x29. Then, I want to do this with each column, ending with 6 matrices of 500x29. I feel like theres a way to do this with a for loop I just dont know how. Help?

Accepted Answer

Ahmet Cecen
Ahmet Cecen on 12 Nov 2016
Say your Cell array is C:
D = cell2mat(C);
E = reshape(D(:),[500 29*6]);
Now every 500 by 29 chunk in E is a matrix you want.
  2 Comments
Zach Wallace
Zach Wallace on 12 Nov 2016
I didnt know about cell2mat, thanks! But I'm not sure why you need reshape?
James Tursa
James Tursa on 12 Nov 2016
Slight edit:
D = cell2mat(C(:)); % Use C(:) to ensure columns line up
E = reshape(D,[500 29 6]); % So 3rd index picks off the 500x29 matrix
I.e., E(:,:,1) is your 1st matrix, E(:,:,2) is your 2nd matrix, etc. Could of course use mat2cell on E if you wanted the result in a cell array.

Sign in to comment.

More Answers (0)

Categories

Find more on Cell Arrays in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!