Converting a cell array to a multidimensional array

12 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Voss
Voss il 20 Dic 2021
AA = cellfun(@(x)x.',A,'UniformOutput',false); % transpose each element of A
B = cat(3,AA{:}); % concatenate along the third dimension
  2 Commenti
Bryan Wilson
Bryan Wilson il 20 Dic 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 il 20 Dic 2021
That's true, and it's probably more efficient.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Prodotti


Release

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by