convert cell array to 3d array

i have cell array which contains multiple elements like this: a={2x1 cell,2x1 cell,2x1 cell;3x1 cell,3x1 cell,3x1 cell}
and every cell contains elements like for example for first row elements are like this:
a{1,1}{1,1}=2
a{1,1}{2,1}=2
a{1,2}{1,1}=1
a{1,2}{2,1}=1
a{1,3}{1,1}=1
a{1,3}{2,1}=-1
i want to convert this cell array into a 3D array. i have tried cell2mat but it gives following error:
"CELL2MAT does not support cell arrays containing cell arrays or objects"
please help.

 Risposta accettata

Stephen23
Stephen23 il 14 Apr 2017
Modificato: Stephen23 il 14 Apr 2017
Assuming that all numeric arrays are of a size that can be concatenated together:
>> cell2mat(cellfun(@cell2mat,a,'uni',0))
ans =
2 1 1
2 1 -1
You can then use reshape to arrange the data into a 3D array. Or alternatively, use reshape or permute on the intermediate cell array:
cell2mat(permute(cellfun(@cell2mat,a,'uni',0),[1,3,2]))
As you did not state how you want the dimensions rearranged, it is hard to give more advice than that.

2 Commenti

lucksBi
lucksBi il 14 Apr 2017
Thankyou for your answer. But it gives following error.
Error using cat
Dimensions of matrices being concatenated are not consistent.
i want answer in this form:
2 1 1
2 1 -1

Accedi per commentare.

Più risposte (0)

Categorie

Richiesto:

il 14 Apr 2017

Commentato:

il 14 Apr 2017

Community Treasure Hunt

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

Start Hunting!

Translated by