Transform a 3D dimension array to n 2D matrix

How can I transform a 3D dimension array (15*781*81) to 15 extracted 781*81 2D matrix to make it feasible to write down them in different Excel files?
Cheers,
Hiua

 Respuesta aceptada

Walter Roberson
Walter Roberson el 24 de Jul. de 2019
result = cellfun(@squeeze, num2cell(YourArray, [2 3]), 'uniform', 0)
This will give you a 15 x 1 cell array, each entry of which is a 781 x 81 array

2 comentarios

Another possible way:
result = arrayfun(@(k) squeeze(YourArray(k,:,:)),1:15,'UniformOutput',false);
This will also give you the same result as Walter-san's answer.
Hiua Daraei
Hiua Daraei el 26 de Jul. de 2019
Thanks indeed

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
Stephen23 el 24 de Jul. de 2019
"How can I transform a 3D dimension array (15*781*81) to 15 extracted 781*81 2D matrix to make it feasible to write down them in different Excel files?"
There is no point in creating a separate cell array with duplicates of all of the data.
Simply loop over the array and save it as you go:
A = your 15x781x81 array
for k = 1:size(A,1)
M = permute(A(k,:,:),[2,3,1]);
... save M here
end

2 comentarios

Hiua Daraei
Hiua Daraei el 26 de Jul. de 2019
Another Solution! hanks again
Stephen23
Stephen23 el 28 de Jul. de 2019
@Hiua Daraei: you can vote for my answer too! Voting is an easy way to show your appreciation.

Iniciar sesión para comentar.

Categorías

Productos

Preguntada:

el 24 de Jul. de 2019

Comentada:

el 28 de Jul. de 2019

Community Treasure Hunt

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

Start Hunting!

Translated by