merge cells into a single one

I have a number of cells h={cell1; cell2; cell3;...cell100}, each cell contains one row but multiple columns (1*n, n varies across cells). Now I want a single cell g contain one row and the sum(n) columns. The basic method is g=[h(1) h(2) h(3) ... h(100)]. Since there are so many cells, it is not convenient to type all. Is there any effective way to make this by exploiting the index? Many thanks.

1 Comment

A simple transpose function works for cell array.

Sign in to comment.

Answers (2)

If your data looks like
v={1:3 10:20 4 100:105}
out=cell2mat(v)

1 Comment

Thanks, but actually I have h={1:3; 10:20; 4; 100:105} and I want to have the v you mentioned. The basic way is just too inconvenient to type.

Sign in to comment.

dpb
dpb on 28 Jul 2014
Edited: dpb on 28 Jul 2014
c={cell2mat(c)};
...h={1:3; 10:20; 4; 100:105}
Well, you didn't say that in the original. But the answer is the same excepting you must transpose c --
c={cell2mat(c.')};
I returned it as a cell, Azzi just left it as the array; your choice of which you want.

2 Comments

The transpose function works, but thanks for the help.
.' is the transpose function as was pointed out that's what you needed to do once you revealed you had a column array instead of row. The ' operator is the complex conjugate transpose; for the cell array orientation the accidental use of ' instead of .' does no harm as it doesn't operate on the cell content, but it's a poor habit to get into.

Sign in to comment.

Categories

Tags

Asked:

on 28 Jul 2014

Commented:

dpb
on 28 Jul 2014

Community Treasure Hunt

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

Start Hunting!