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

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.

 Akzeptierte Antwort

Iman Ansari
Iman Ansari am 16 Apr. 2013

0 Stimmen

Hi
New_Cell={};
for i=1:n
New_Cell{i,1}=cell2mat(C(i,:));
end

1 Kommentar

Zach Modig
Zach Modig am 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Zach Modig
Zach Modig am 16 Apr. 2013
Bearbeitet: Zach Modig am 16 Apr. 2013

0 Stimmen

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 Kommentar

Try this:
C=cellfun(@transpose,C,'UniformOutput', false)
New_Cell={};
for i=1:n
New_Cell{i,1}=cell2mat(C(i,:));
end
New_Cell

Melden Sie sich an, um zu kommentieren.

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by