How to convert from cell array to multidimensional array?
23 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Anton Filyayev
le 24 Nov 2015
Modifié(e) : Christopher Crawford
le 12 Jan 2020
I have a cell array that is 3x3 with each cell containing a vector of (1x1024). It is essentially the same as a 3x3 matrix with a dimension of 1024. How can I convert from cell array to multidimensional array that has these dimensions of (3,3,1024)? I tried cell2mat, but it simply concatenates them into a 3x3072 matrix.
0 commentaires
Réponse acceptée
Andrei Bobrov
le 24 Nov 2015
A -your cell array [3 x 3].
Z = cellfun(@(x)reshape(x,1,1,[]),A,'un',0);
out = cell2mat(Z);
2 commentaires
Christopher Crawford
le 12 Jan 2020
Modifié(e) : Christopher Crawford
le 12 Jan 2020
To do the same for a cell array A of arbitrary ndarrays, replace [] with size(x):
B=cell2mat(cellfun(@(x)reshape(x,[1,1,size(x)]),A,'un',0))
which creates an array 2 dimensions higer than that of the cells of A.
To only add one dimension for row or collumn cell arrays (and none for a singleton cell array):
C=reshape(B,[size(A)(size(A)~=1),size(A{1})])
or permute the ndarray dimensions ahead of the cell array dimensions:
C=permute(B,[3:ndims(B),1:2])
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!