# How do you vertically concatenate the rows of a cell array consisting of vectors of numbers?

11 views (last 30 days)
L'O.G. on 30 Mar 2022
Commented: Simon Chan on 30 Mar 2022
I want to vertically concatenate the elements of a cell array so that, for example, an array that is 3 x 9 becomes 1 x 9. How do I do that? The following concatenates everything into one dimension, which isn't what I want:
vertcat(cellarray{:});
##### 2 CommentsShow 1 older commentHide 1 older comment
L'O.G. on 30 Mar 2022
Edited: L'O.G. on 30 Mar 2022
Each element of the cell array contains an N x 1 vector where N is not necessarily the same for each vector and the elements of the vector are numbers with double precision.

per isakson on 30 Mar 2022
Example
m = magic(3);
m = [m,m,m];
cac = num2cell(m); % sample data
arrayfun( @(ix) vertcat(cac{:,ix}), [1:9], 'uni',false )
ans = 1×9 cell array
{3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double} {3×1 double}
Is this what you look for?
L'O.G. on 30 Mar 2022
Edited: L'O.G. on 30 Mar 2022
Yes, beautiful! Thanks! I didn't know about arrayfun.

Simon Chan on 30 Mar 2022
Tru the following:
cellfun(@(x) cell2mat(x),num2cell(a,1),'uni',0)
##### 2 CommentsShow 1 older commentHide 1 older comment
Simon Chan on 30 Mar 2022
a is the 3x9 cell array

Walter Roberson on 30 Mar 2022
Output = arrayfun(@(ColIdx) vertcat(YourCell{:,ColIdx}), 1:size(YourCell,2), 'uniform', 0);

### Categories

Find more on Data Type Identification in Help Center and File Exchange

R2021b

### Community Treasure Hunt

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

Start Hunting!