cration of contents inside the cell array of uniform size

Hi,
In my loop operation I am generating 1 X 72 cell. At every iteration the values will be stored in the consequetive columns in the form of 8 x 3 double. However, in some cases it is 5 x3 or 2 x3. I would like to make all entries in the form of 8 x 3.. Could someone please help me with this ..
I have attached my matrix for an reference..

 Accepted Answer

result = cellfun(@(C) full([(0:7).', sparse(C(:,[1 1])+1, [1*ones(1,size(C,1)), 2*ones(1,size(C,1))], C(:,[2 3]), 8, 2)]), Data, 'uniform', 0);

6 Comments

Perfect..
Thanks a lot Walter...!!
Hi walter,
Just one follow up question,. Just in case, as shown in the attacheed array, sometimes I am having empty cell, here also I need to convert empy cell into 8 x 3 double..
Could you please help..
mask = cellfun(@isempty, Data));
result(mask) = {zeros(8,3)};
result(~mask) = cellfun(@(C) full([(0:7).', sparse(C(:,[1 1])+1, [1*ones(1,size(C,1)), 2*ones(1,size(C,1))], C(:,[2 3]), 8, 2)]), Data(~mask), 'uniform', 0);
Many thanks..
But, the the first column values in the each 8x3 double should be liek 0, 1, 2, 3, 4, 5, 6,7 second and third column entry can be zero...
mask = cellfun(@isempty, Data));
result(mask) = {[(0:7).', zeros(8,2)]};
result(~mask) = cellfun(@(C) full([(0:7).', sparse(C(:,[1 1])+1, [1*ones(1,size(C,1)), 2*ones(1,size(C,1))], C(:,[2 3]), 8, 2)]), Data(~mask), 'uniform', 0);

Sign in to comment.

More Answers (1)

May try the following to add NaN to the new rows
load('data.mat');
addrow = cellfun(@(x) 8-size(x,1),Data,'uni',0);
result = cellfun(@(x,y) vertcat(x,NaN(y,3)),Data,addrow,'uni',0);

1 Comment

Hi,
Many thanks.. The only isssue is , in the 8 x 3 array the first columns should be always 0 1 2 3 4 5 6 7... For other 2, 3 columns NaN entries is not a problem..
Is there a way out??

Sign in to comment.

Categories

Find more on Creating, Deleting, and Querying Graphics Objects in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!