concatenate two cells of different dimention into a single array

1 view (last 30 days)
navan
navan on 7 Jun 2016
Commented: Star Strider on 7 Jun 2016
I have three cells
so for example
Cell1 is 1x3 that is {1;1;1}
Cell2 is 3x2 that is {2,2;3,3;4,4}
Cell3 is 1x2 that is {1;1}
I want to concatenate all these cells into a single array so that i can see the results as
1 2 2 1
1 3 3 1
1 4 4

Accepted Answer

Star Strider
Star Strider on 7 Jun 2016
This works:
Cell1 = {1;1;1};
Cell2 = {2,2;3,3;4,4};
Cell3 = {1;1};
Cell3{3} = []; % Add Empty Element To End Of ‘Cell3’
Result = cat(2, Cell1, Cell2, Cell3)
Result =
[1.0000e+000] [2.0000e+000] [2.0000e+000] [1.0000e+000]
[1.0000e+000] [3.0000e+000] [3.0000e+000] [1.0000e+000]
[1.0000e+000] [4.0000e+000] [4.0000e+000] []
  2 Comments
Star Strider
Star Strider on 7 Jun 2016
My pleasure.
I am not aware of any way to do what you want without adding an empty element. All the rows and columns have to be equal. You can make it more general with something like this:
Cell1 = {1;1;1};
Cell2 = {2,2;3,3;4,4};
Cell3 = {1;1};
idx = [size(Cell3,1):size(Cell1,1)-1]+1;
Cell3{idx} = []; % Add Empty Element To End Of ‘Cell3’
Result = cat(2, Cell1, Cell2, Cell3)
I do not know how robust that will be with other matrices, but it works here. It gives you a way of having the code calculate the number of empty elements to insert.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!