How to convert from cell array to multidimensional array?
24 ビュー (過去 30 日間)
古いコメントを表示
Anton Filyayev
2015 年 11 月 24 日
編集済み: Christopher Crawford
2020 年 1 月 12 日
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 件のコメント
採用された回答
Andrei Bobrov
2015 年 11 月 24 日
A -your cell array [3 x 3].
Z = cellfun(@(x)reshape(x,1,1,[]),A,'un',0);
out = cell2mat(Z);
2 件のコメント
Christopher Crawford
2020 年 1 月 12 日
編集済み: Christopher Crawford
2020 年 1 月 12 日
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])
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!