MATLAB Answers

0

Concatenate a column of cells into a single array

Asked by Corey Pew on 15 Apr 2019
Latest activity Commented on by Corey Pew on 16 Apr 2019
Hello,
I have a cell containing multiple arrays that I want to concatenate into a single array such that X{1}, X{2},... are all each a 100x1 double. I am hoping for a non looping solution that will put them all together into a single array that is 100xlength(X). I have tried using cat(), vertcat() and others but keep getting the error that 'dimensions of arrays being concatenated are not consistent.' Any help is greatly appreciated, thanks!

  1 Comment

Update, I mistyped my format. My cell array is actually a column of cells such that:
>> X = { rand(4,1); rand(4,1); rand(4,1) }
X =
3×1 cell array
{4×1 double}
{4×1 double}
{4×1 double}
Both answers below work if you first transpose X:
>> X = X';
Thank you for the help!

Sign in to comment.

Products


Release

R2018a

2 Answers

Answer by madhan ravi
on 15 Apr 2019
 Accepted Answer

cell2mat(X)

  0 Comments

Sign in to comment.


Answer by per isakson
on 15 Apr 2019

cat() is also a possiblity
Y = cat( 2, X{:} );
Example
>> X = { rand(4,1), rand(4,1), rand(4,1) }
X =
1×3 cell array
{4×1 double} {4×1 double} {4×1 double}
>> cat( 2, X{:} )
ans =
0.8147 0.6324 0.9575
0.9058 0.0975 0.9649
0.1270 0.2785 0.1576
0.9134 0.5469 0.9706
>>

  1 Comment

Thank you for the excellent example. Seeing it this way helped me realize I needed to transpose X to get the desired result.

Sign in to comment.