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

4 ビュー (過去 30 日間)
Zach Modig
Zach Modig 2013 年 4 月 15 日
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.

採用された回答

Iman Ansari
Iman Ansari 2013 年 4 月 16 日
Hi
New_Cell={};
for i=1:n
New_Cell{i,1}=cell2mat(C(i,:));
end
  1 件のコメント
Zach Modig
Zach Modig 2013 年 4 月 16 日
Thanks for the help. That gets me closer, but every n in New_Cell is now 1x(3*m) instead of 3xm.

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

その他の回答 (1 件)

Zach Modig
Zach Modig 2013 年 4 月 16 日
編集済み: Zach Modig 2013 年 4 月 16 日
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 件のコメント
Iman Ansari
Iman Ansari 2013 年 4 月 16 日
Try this:
C=cellfun(@transpose,C,'UniformOutput', false)
New_Cell={};
for i=1:n
New_Cell{i,1}=cell2mat(C(i,:));
end
New_Cell

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

カテゴリ

Help Center および File ExchangeCell Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by