Clear Filters
Clear Filters

How to convert cells within cells to double.

7 views (last 30 days)
Megha
Megha on 23 Oct 2018
Edited: Bruno Luong on 23 Oct 2018
How to convert cells within cells to double.
cell2mat(cell2mat(a))
does not work

Answers (3)

madhan ravi
madhan ravi on 23 Oct 2018
Edited: madhan ravi on 23 Oct 2018
>> a=rand(1,20);
a=num2cell(a)
c=(cell2mat(a))
a =
1×20 cell array
Columns 1 through 5
{[0.5238]} {[0.5338]} {[0.8043]} {[0.0651]} {[0.5096]}
Columns 6 through 10
{[0.7079]} {[0.4156]} {[0.9226]} {[0.0987]} {[0.6105]}
Columns 11 through 15
{[0.7985]} {[0.2011]} {[0.3426]} {[0.2271]} {[0.7768]}
Columns 16 through 20
{[0.2135]} {[0.6125]} {[0.9852]} {[0.2758]} {[0.7852]}
c =
Columns 1 through 7
0.5238 0.5338 0.8043 0.0651 0.5096 0.7079 0.4156
Columns 8 through 14
0.9226 0.0987 0.6105 0.7985 0.2011 0.3426 0.2271
Columns 15 through 20
0.7768 0.2135 0.6125 0.9852 0.2758 0.7852
>>

Andrei Bobrov
Andrei Bobrov on 23 Oct 2018
Let A - your cell array with cells
out = cell2mat(cellfun(@cell2mat,A,'un',0));

Bruno Luong
Bruno Luong on 23 Oct 2018
Edited: Bruno Luong on 23 Oct 2018
Just cascading CAT as many as nested level
>> c={{[1 2]} {[3 4 5]}}
c =
1×2 cell array
{1×1 cell} {1×1 cell}
>> c1=cat(2,c{:})
c1 =
1×2 cell array
{1×2 double} {1×3 double}
>> a= cat(2,c1{:})
a =
1 2 3 4 5
>>
Or doing in loop
a = c;
for level=1:2
a = cat(2,a{:});
end

Community Treasure Hunt

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

Start Hunting!