MATLAB Answers

split numbers separated by commas in a sub cell array into their own column

3 views (last 30 days)
Ean Hendrickson
Ean Hendrickson on 30 Nov 2019
Commented: Adam Danz on 30 Nov 2019
I have a 18x1 cell array filled with numbers. Each cell of the array has a different size. How do I split each cell so there are no longer any subcells. I tried using cell2mat but since each column in the sub cell is of different size it did not work.
This is what the cell array looks like now
and this is what I am attempting to make it look like


the cyclist
the cyclist on 30 Nov 2019
Can you upload the variable in a mat file, using the paper clip icon? An image of the data is not useful for testing.
Ean Hendrickson
Ean Hendrickson on 30 Nov 2019
here you go, I feel like it should be really simple but I have been struggling for a while with this.

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 30 Nov 2019
Edited: Adam Danz on 30 Nov 2019
You were on the right track with cell2mat but first you have to pad the arrays so they are all equal length. Two of the three lines below use cellfun().
% Max number of elements within each vector
nMax = max(cellfun(@numel,section_2_1));
% Pad all cell elements with 0 so each cell element has equal length
x = cellfun(@(x)[x,zeros(1,nMax-numel(x))],section_2_1,'UniformOutput',false);
% Output matrix
m = cell2mat(x);


Show 2 older comments
Adam Danz
Adam Danz on 30 Nov 2019
@ creates an anonymous function. Cellfun applies that function to each element of the cell array.
Here's a different example of an anonymous function
f = @(a,b,c) a + b * c;
y = f(1,3,5)

Sign in to comment.

More Answers (0)

Translated by