How do I reduce an {nxm(3x1)} cell to a an {nx{3xm}} cell?

1 view (last 30 days)
I apologize in advance if this seems trivial.
I have an {nxm(3x1)} object. That is, I have an n x m cells, each a 1x3 matrice. I'd like to reduce this so that I have {nx1} cells, each of which contain 1 {3xm} cell (or double, it doesn't matter) so that I can easily export the various 3xm matrices to n different 3xm arrays within an excel spreadsheet.
I've made various attempts at writing for loops, to no avail.
Any insight would be greatly appreciated.
Thanks.
EDIT: apparently I didn't look close enough at the cells, they are actually 1x3 doubles vice the original 3x1 I had stated.

Accepted Answer

Iman Ansari
Iman Ansari on 16 Apr 2013
Hi
New_Cell={};
for i=1:n
New_Cell{i,1}=cell2mat(C(i,:));
end
  1 Comment
Zach Modig
Zach Modig on 16 Apr 2013
Thanks for the help. That gets me closer, but every n in New_Cell is now 1x(3*m) instead of 3xm.

Sign in to comment.

More Answers (1)

Zach Modig
Zach Modig on 16 Apr 2013
Edited: Zach Modig on 16 Apr 2013
Once I accounted for the actual structure of the cells, Iman's answer proved to be the correct one. I had to invert each cell into a 3x1 structure, and then the loop using cell2mat that Iman correctly suggested.
for j = 1:n
for k = 1:m
C{j,k} = C{j,k}';
New_Cell{j,1} = cell2mat(C(j,:));
end
end
  1 Comment
Iman Ansari
Iman Ansari on 16 Apr 2013
Try this:
C=cellfun(@transpose,C,'UniformOutput', false)
New_Cell={};
for i=1:n
New_Cell{i,1}=cell2mat(C(i,:));
end
New_Cell

Sign in to comment.

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!