How to convert from cell array to multidimensional array?

24 ビュー (過去 30 日間)
Anton Filyayev
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.

採用された回答

Andrei Bobrov
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 件のコメント
Anton Filyayev
Anton Filyayev 2015 年 11 月 24 日
編集済み: Anton Filyayev 2015 年 11 月 24 日
This worked beautifully, thanks!!
Christopher Crawford
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 ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by