converting 3d matrix into a cell array
9 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
AT_HYZ
le 21 Mar 2024
Réponse apportée : Dyuman Joshi
le 22 Mar 2024
Hi,
I have a 3D matrix (1001x 259x 259) and want to convert to a cell array (1x1001) in which each cell array has 259x259 matrix (2D matrix). Could anyone help?
Thanks.
Réponse acceptée
Dyuman Joshi
le 22 Mar 2024
@AT_HYZ, change the dimensions and use the above transformation -
abc = rand(1001,259,259);
%Shift dimensions
Mymatrix = shiftdim(abc, 1);
%Check size
size(Mymatrix)
%Use num2cell
Mycell = num2cell(Mymatrix,[1 2]);
size(Mycell)
%Change the size of the cell array as required
Mycell = reshape(Mycell, 1, 1001);
%Check the size of data inside a cell element
size(Mycell{1})
0 commentaires
Plus de réponses (1)
James Tursa
le 22 Mar 2024
Modifié(e) : James Tursa
le 22 Mar 2024
x = rand(1001,259,259);
result = arrayfun(@(k)squeeze(x(k,:,:)),1:size(x,1),'uni',false);
size(result)
size(result{1})
But, be advised that for matrix manipulation it might be better to keep this data as a 3D array with dimensions 259x259x1001 (i.e., permute(x,[2 3 1])) so that you can take advantage of the page functions like pagemtimes, pagemldivide, etc.
0 commentaires
Voir également
Catégories
En savoir plus sur Matrices and Arrays 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!