Converting a cell array to a multidimensional array

11 vues (au cours des 30 derniers jours)
Bryan Wilson
Bryan Wilson le 20 Déc 2021
Commenté : Voss le 20 Déc 2021
I have a 1xK cell array of MxN doubles. I need to covert it to a multidimentional array of NxMxK doubles. I should be able to do this without a "for loop" using some combination of cellfun, reshape, and permute. For the life of me I can't figure it out. Note: I saw a very similar question here (how-to-convert-from-cell-array-to-multidimensional-array).
K = 6;
M = 1000;
N = 4;
A = repmat({rand(M,N)},1,K);
%B = ?
% size(B)
% ans =
% 4 1000 6

Réponse acceptée

Voss
Voss le 20 Déc 2021
AA = cellfun(@(x)x.',A,'UniformOutput',false); % transpose each element of A
B = cat(3,AA{:}); % concatenate along the third dimension
  2 commentaires
Bryan Wilson
Bryan Wilson le 20 Déc 2021
Thanks Benjamin.
Your previous answer that you deleted also works if you add a permute after the cat.
B = cat(3,A{:});
B = permute(B,[2 1 3]);
Voss
Voss le 20 Déc 2021
That's true, and it's probably more efficient.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by