Converting a cell type data to a 4d format

1 view (last 30 days)
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 Comments
Saugata Bose
Saugata Bose on 26 Jun 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 on 26 Jun 2019
What's the meaning of the colons in A(1,:1,:1,:1) ?

Sign in to comment.

Accepted Answer

madhan ravi
madhan ravi on 26 Jun 2019
Try this:
AA=cellfun(@(x) x.',A,'un',0);
Wanted = cat(4,AA{:})
  3 Comments
madhan ravi
madhan ravi on 26 Jun 2019
Edited: madhan ravi on 26 Jun 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 on 26 Jun 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.

Sign in to comment.

More Answers (1)

KSSV
KSSV on 26 Jun 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

Community Treasure Hunt

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

Start Hunting!