Clear Filters
Clear Filters

Vertically Concatenate Cells with Same Number of Columns

3 views (last 30 days)
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

Star Strider
Star Strider on 14 Jul 2015
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
Eli Dim
Eli Dim on 14 Jul 2015
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.
Star Strider
Star Strider on 14 Jul 2015
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)

Azzi Abdelmalek
Azzi Abdelmalek on 14 Jul 2015
Edited: Azzi Abdelmalek on 14 Jul 2015
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
Eli Dim
Eli Dim on 14 Jul 2015
Edited: Eli Dim on 14 Jul 2015
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
Azzi Abdelmalek
Azzi Abdelmalek on 14 Jul 2015
a={num2cell(rand(2,3));num2cell(rand(1,3));num2cell(rand(4,3))}
b=cat(1,a{:})

Sign in to comment.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!