Clear Filters
Clear Filters

How to concatenate 3D cells arrays

5 views (last 30 days)
Mori
Mori on 9 Jul 2016
Commented: Mori on 9 Jul 2016
Here I am posting my question graphically to illustrate better my question.
I have 2 3D cell array (A, B) with the same cell sizes and different lengths. I want to Concatenate A and B in order to get C which has same cell size but longer length.
  7 Comments
Mori
Mori on 9 Jul 2016
Edited: Mori on 9 Jul 2016
3 arrays with 11 cells each with 61 cells, array A with 2252, B with 700, C with 1000 doubles.
I want an array with 11 cells, each 61 cell each with (2252+700+1000) doubles. first 11 cells is in Y direction, next 61 cells are in X direction and doubles are in Z direction.
*Yes, you right I noticed my figure is not illustrate my problem. Here is the update of the figure. Sorry about that.
Mori
Mori on 9 Jul 2016
Indeed keeping the cell array format and line up the doubles at each cell

Sign in to comment.

Accepted Answer

per isakson
per isakson on 9 Jul 2016
Edited: per isakson on 9 Jul 2016
Try
>> R = cssm()
R =
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
{61x1 cell}
>> R{1}{1}
ans =
Columns 1 through 14
1 2 3 4 5 6 7 8 9 1 2 3 4 5
Columns 15 through 18
6 1 2 3
>> R{11}{61}
ans =
Columns 1 through 14
1 2 3 4 5 6 7 8 9 1 2 3 4 5
Columns 15 through 18
6 1 2 3
and
>> tic, R = cssm(); toc
Elapsed time is 0.008893 seconds.
where
function R = cssm( )
A = (1:9);
A = repmat( {A}, [61,1] );
A = repmat( {A}, [11,1] );
B = (1:6);
B = repmat( {B}, [61,1] );
B = repmat( {B}, [11,1] );
C = (1:3);
C = repmat( {C}, [61,1] );
C = repmat( {C}, [11,1] );
R = cell( 11, 1 );
for jj = 1 : 11
D = cell( 61, 1 );
for ii = 1 : 61
D{ii} = cat( 2, A{jj}{ii}, B{jj}{ii}, C{jj}{ii} );
end
R{jj} = D;
end
end
&nbsp
"next 61 cells are in X direction" &nbsp replace 61,1 by 1,61
"doubles are in Z direction" &nbsp I don't understand what you mean.

More Answers (1)

Walter Roberson
Walter Roberson on 9 Jul 2016
C = cat(3, A, B);
  1 Comment
Mori
Mori on 9 Jul 2016
This is not the one I want. let say A{1,1} has and matrix of [100,1] and B{1,1} has a matrix of [20,1] and so on. with CAT i get 2 sheets but what I need all recorded in on sheet at the same index map. For C{1,1} i want a matrix of [120,1]. thank you

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!