MATLAB Answers

Combine two cell array of different dimension

160 views (last 30 days)
I have a two cell array A = {1,2}, B={4;5;6}
I need the result as one single array C = { 1 2 4
5
6 }
How it can be done?
Thank you
  1 Comment
Guillaume
Guillaume on 7 May 2015
If your cell arrays only contain scalar values, why are you bothering with cell arrays instead of the much faster and easier to use plain matrices?
Furthermore, it's unclear what output you want. Note that:
C = { 1 2 4
5
6 }
is not valid matlab syntax.

Sign in to comment.

Accepted Answer

Thomas Koelen
Thomas Koelen on 7 May 2015
Edited: Thomas Koelen on 7 May 2015
A={1,2};
B={4,5,6};
C=cat(2,A,B)
C =
[1] [2] [4] [5] [6]
2 in cat is the direction you want to concatenate in, 1 does it vertically, which doesn't work because the cell doesn't have the same number of columns!
  3 Comments
Thomas Koelen
Thomas Koelen on 7 May 2015
O, I didn't seee that! Must've thought it was a typo.
What you can do is:
A={1,2};
B={4;5;6};
C=cat(2,A,B')
C =
[1] [2] [4] [5] [6]
Like Guillaume said, there is no way to make a matrix or cell that's not a rectangle.

Sign in to comment.

More Answers (2)

singh
singh on 7 May 2015
Edited: singh on 7 May 2015
A = {1,2}, B={3;4;5}
vertcat([A]',B)
ans =
[1]
[2]
[3]
[4]
[5]

Sabarinathan Vadivelu
Sabarinathan Vadivelu on 7 May 2015
Edited: Sabarinathan Vadivelu on 7 May 2015
Try this
A = {1,2};
B = {3, 5, 6};
C = horzcat(A, B)
ans =
C = {1 2 3 5 6}
  3 Comments
Sabarinathan Vadivelu
Sabarinathan Vadivelu on 7 May 2015
You should transpose one vector and then concatenate it.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!