MATLAB Answers

0

How to convert data with 3Dimensions to cell array

Asked by Mahendran Subramanian on 2 Oct 2019
Latest activity Commented on by Guillaume
on 2 Oct 2019
I have a data A with 3D dimesions 2 x 5 x 2353 (double) and I would like to change it to the following
A=2353×1 cell
{2×5 double}
{2×5 double}
{2x5 double}
{2x5 double}
{2x5 double}
{2x5 double}
{... double}
Can I use Mat2Cell function ?

  0 Comments

Sign in to comment.

1 Answer

Answer by Guillaume
on 2 Oct 2019
 Accepted Answer

The simplest is:
B = num2cell(A, [1, 2]); %keep rows and columns together, split the pages
This will give you a 1x1x2353 cell array. If you do want a 2353x1 cell array permute the result:
B = permute(num2cell(A, [1, 2]), [3, 2, 1]);

  2 Comments

Thank you for the answer what if the data A is 2D 2353 x 1 (double) and if I would like to change it to the following
A=2353×1 cell
can I use
B = num2cell (A, [2353]);
?
No, the inputs to num2cell are the array to split and the dimensions to keep together. Nothing to do with the size of the array. If you want to split each element in an individual cell, then it's simply:
B= num2cell(A);
documentation of num2cell which has plenty of examples.

Sign in to comment.