Converting a cell type data to a 4d format

2 visualizaciones (últimos 30 días)
Saugata Bose
Saugata Bose el 25 de Jun. de 2019
Editada: Saugata Bose el 26 de Jun. de 2019
Hi,
I struck into a phase where my data came into one format and I need to reshape it to other format. I have tried reshape and permute, yet, I did not achieve the ultimate result. Would you please help me to get the result. And I would really appreciate if you would please explain your solution.
Input:
A={5 x 1} cell type data where every cell is in this format {300 x 18 single}
Expected Output:
I expect to have an output where each element of A will be formatted as 18 x 300 x 1 x 1 structure.
I have tried to implement the following code to format A but I did not achieve the expected result.
z = cellfun(@(X) permute(X,[3 2 1]),A,'UniformOutput',false);
I am looking for your advice in this regard.
Thanks
  3 comentarios
Saugata Bose
Saugata Bose el 26 de Jun. de 2019
@madhan: Hi. I would expect each cell from A(of size 300 x 18) will turn into a 18 x 300 x 1 x 1, 18 x 300 x 1 x 2, 18 x 300 x 1 x 3, 18 x 300 x 1 x 4 and 18 x 300 x 1 x 5 format. I am not sure though, whether it is possible or not. what you think?
per isakson
per isakson el 26 de Jun. de 2019
What's the meaning of the colons in A(1,:1,:1,:1) ?

Iniciar sesión para comentar.

Respuesta aceptada

madhan ravi
madhan ravi el 26 de Jun. de 2019
Try this:
AA=cellfun(@(x) x.',A,'un',0);
Wanted = cat(4,AA{:})
  3 comentarios
madhan ravi
madhan ravi el 26 de Jun. de 2019
Editada: madhan ravi el 26 de Jun. de 2019
Bose keep the facts straight the latter comment you made seems to contradict the original question before you edited.
:1 is not a valid MATLAB syntax
Saugata Bose
Saugata Bose el 26 de Jun. de 2019
@Madhan. I absolutely agree. this is my wrong understanding. So to access each of the 4 d element seperately I need to acces by A(:,:,:,1). Thanks for such a solution. I'll edit my post to undo my wrong output expectation.

Iniciar sesión para comentar.

Más respuestas (1)

KSSV
KSSV el 26 de Jun. de 2019
% CReate random input for demo
A = cell(5,1) ;
for i = 1:5
A{i} = rand(300,18) ;
end
B = zeros(18,300,5) ;
for i = 1:5
B(:,:,i) = A{i}' ;
end

Categorías

Más información sobre Structures en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by