Converting cell of numbers to double

9 views (last 30 days)
Andromeda
Andromeda on 27 May 2022
Commented: Steven Lord on 27 May 2022
Hi. How do I convert a cell of numbers from cell to double? I looked up the previously asked questions but they mostly involved strings and I have numbers. I didn't post any code, I just want to know if there's any way of doing it if you have a cell class with mutiple matrices in it. How can I also store a cell class in a structure array where each "f1" and "f2" will be the field?
This is what I am having
fie =
2×2 cell array
{["f1"]} {3×7 cell}
{["f2"]} {4×7 cell}
This is what I want
fie =
2×2 cell array
{["f1"]} {3×7 double}
{["f2"]} {4×7 double}

Accepted Answer

Steven Lord
Steven Lord on 27 May 2022
If the cells in that cell array in the upper-right cell of your outer cell array can be concatenated to form a matrix you could use cell2mat.
C = mat2cell(reshape(1:21, 3, 7), ones(3, 1), [2, ones(1, 5)]) % Making sample data
C = 3×6 cell array
{[1 4]} {[7]} {[10]} {[13]} {[16]} {[19]} {[2 5]} {[8]} {[11]} {[14]} {[17]} {[20]} {[3 6]} {[9]} {[12]} {[15]} {[18]} {[21]}
A = {'abc', C}
A = 1×2 cell array
{'abc'} {3×6 cell}
B = cell2mat(A{1, 2})
B = 3×7
1 4 7 10 13 16 19 2 5 8 11 14 17 20 3 6 9 12 15 18 21
A{1, 2} = B
A = 1×2 cell array
{'abc'} {3×7 double}
This wouldn't work if C is not of a form that can be combined together into a matrix, like if the contents of the cells in C don't have compatible numbers of rows and/or columns.
D = {[1 2], 3; [4 5 6], 7} % Can't have a matrix whose rows have different numbers of columns
D = 2×2 cell array
{[ 1 2]} {[3]} {[4 5 6]} {[7]}
cell2mat(D)
Error using cat
Dimensions of arrays being concatenated are not consistent.

Error in cell2mat (line 83)
m{n} = cat(1,c{:,n});
  4 Comments
Steven Lord
Steven Lord on 27 May 2022
q = reshape(1:21, 3, 7)
q = 3×7
1 4 7 10 13 16 19 2 5 8 11 14 17 20 3 6 9 12 15 18 21
mystruct.A = q
mystruct = struct with fields:
A: [3×7 double]
y = mystruct.A
y = 3×7
1 4 7 10 13 16 19 2 5 8 11 14 17 20 3 6 9 12 15 18 21
check = isequal(q, y) % true
check = logical
1

Sign in to comment.

More Answers (1)

Fangjun Jiang
Fangjun Jiang on 27 May 2022
cell2mat()
cell2struct()

Community Treasure Hunt

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

Start Hunting!

Translated by