How to split a cell array?

4 views (last 30 days)
angelavtc
angelavtc on 25 Apr 2016
Commented: angelavtc on 30 Apr 2016
Hello!
Be
Z={'1.1 2.1 3.2 3.3 5.5 5.4'; '3 4 5 10 11 56'};
a 2*1 cell array.How can I split Z into a cell array with 2x6 cells? Notice that Z is composed by numbers.
Thanks a lot.

Accepted Answer

Stephen23
Stephen23 on 25 Apr 2016
Edited: Stephen23 on 25 Apr 2016
Option One: Convert to Numeric
>> mat = [sscanf(Z{1},'%f'),sscanf(Z{2},'%f')].'
mat =
1.1000 2.1000 3.2000 3.3000 5.5000 5.4000
3.0000 4.0000 5.0000 10.0000 11.0000 56.0000
Best would be to leave it as a numeric array... however if you really need a cell array of numeric scalars, then use num2cell:
num2cell(mat)
Option Two: Keep as String
>> tmp = regexp(Z,'\S+','match');
>> tmp = vertcat(tmp{:})
tmp =
'1.1' '2.1' '3.2' '3.3' '5.5' '5.4'
'3' '4' '5' '10' '11' '56'
  4 Comments
Stephen23
Stephen23 on 26 Apr 2016
Edited: Stephen23 on 26 Apr 2016
@angelavtc: That example with numeric vectors inside a cell array cannot be trivially converted to a single array with each numeric element in its own cell, because you have different number of elements in each vector. You could try experimenting with these FEX submissions:
Note that you can supply the contents of a cell array by using a comma separated list:
inp = {[...],[...]}
out = padcat(inp{:})
angelavtc
angelavtc on 30 Apr 2016
Thanks a lot!!!

Sign in to comment.

More Answers (0)

Categories

Find more on Cell 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!