Vertically Concatenate Cells with Same Number of Columns

I have a column of cells (column_data.png) with different number of rows but same number of columns. The cells contain numbers only. How can I vertically concatenate the cells in column_data?

 Accepted Answer

I’m not sure what you want. Does this work for you?
data_final = { {rand(1,5)}; {rand(2,5)}; {rand(3,5)} };
data_cat = cellfun(@vertcat, data_final);

2 Comments

The data_start is the starting cell array that I have and the data_final is the vertically concatinated cell array that I would like to have. I am afraid the code you suggested does not work in this case.
I needed a loop, but this works:
DF = {};
for k1 = 1:length(data_start)
if ~isempty(data_start{k1})
DF = vertcat(DF, data_start{k1});
end
end
Here, ‘DF’ is ‘data_final’. I didn’t want to overwrite it so I could check it.

Sign in to comment.

More Answers (1)

cell2mat(YourCellArray)
Or Maybe your data looks like
a={num2cell(rand(2,3));num2cell(rand(1,3));num2cell(rand(4,3))};
out=cell2mat(cellfun(@(x) cell2mat(x),a,'un',0))

2 Comments

The first option does not work because I have cells inside.
I want to do the equivalent of:
vertcat(data_final{1,1},data_final{2,1},data_final{3,1},data_final{4,1},....data_final{lastrow,1})
I want to keep the cells and not convert them using cell2mat
a={num2cell(rand(2,3));num2cell(rand(1,3));num2cell(rand(4,3))}
b=cat(1,a{:})

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!